题目 有一个机器人,要穿越迷宫从起始点到终点,迷宫是由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] <= 10 nums 中的所有整数 互不相同 本题来源leetcode:https://leetcode.cn/problems/permutations/ 思路: 本题是dfs的入门问题。nums长度为n,想象n个位置,每次从nums中取一个数字放入其中一个位置,每个数字只能放入一次,对于第i个位置,每个数字都有可能被放入。所以用for循环来遍历nums尝试放入第i个位置,对于第i+1个位置的操作和第i个位置一样,所以直接调用。因为每个数字只能被放入一次,所以要记录是否已经被放入某个位