题目有一个机器人,要穿越迷宫从起始点到终点,迷宫是由0和1组成的二维数组arr,0表示空地,1表示障碍物,给定出发点坐标(xStart,yStart)和终点坐标(xEnd,yEnd),机器人可以向上、下、左、右移动,机器人从起始点到终点的最短路径是多少?思路机器人从起始点出发,正常情况下可以朝4个方向移动,移动到下个位置又可以朝4个方向移动,不断重复,当机器人的坐标和终点坐标相等时,即到达终点,此时有一个路径值,比较所有的路径值,得到最小值,即答案。代码vector<vector<int>> directions = {{0,1},{0,-1},{1,0},{-1,0}}; int minP = INT_MAX; vector<vector<int>> book; void dfsMinPath(vector<vector<int>>& arr,int xStart,int yStart,int xEnd,int yEnd, int step) { if (xStart == xEnd &&
题目:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]] 提示:1 <= nums.length <= 6-10 <= nums[i] <= 10nums 中的所有整数 互不相同本题来源leetcode:https://leetcode.cn/problems/permutations/思路:本题是dfs的入门问题。nums长度为n,想象n个位置,每次从nums中取一个数字放入其中一个位置,每个数字只能放入一次,对于第i个位置,每个数字都有可能被放入。所以用for循环来遍历nums尝试放入第i个位置,对于第i+1个位置的操作和第i个位置一样,所以直接调用。因为每个数字只能被放入一次,所以要记录是否已经被放入某个位置了。当没有空位置了,就是一个排列。