![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯法
qq_48508278
生活明朗 万物可爱 人间值得 全力以赴
展开
-
leetcode45. 跳跃游戏 II(java详解)
一:题目二:上码class Solution { public int jump(int[] nums) { int ans = 0; int curIndex = 0;//当前统计出来的可以移动的最远距离的下标 int nextIndex = 0;//在到达 当前最远距离下标的这段距离内 我们统计出的可以达到的最远距离 //如果在统计的过程中 其覆盖范围已经大于数组下标了,那么原创 2022-05-20 18:53:44 · 512 阅读 · 0 评论 -
leetcode55. 跳跃游戏
一:题目二:上码class Solution { /** 最大覆盖范围是否可以可以覆盖终点 */ public boolean canJump(int[] nums) { int coverIndex = 0; for (int i = 0; i <= coverIndex; i++) { coverIndex = Math.max(i+nums[i],coverIndex原创 2022-05-20 17:15:08 · 233 阅读 · 0 评论 -
leetcode122. 买卖股票的最佳时机 II
一:题目二:上码class Solution { /** 思路:1.局部最优:我们买入当前股票等哪天遇见最大值的时候买出 赚最大利润 2.全局最优:局部最优推出全局最优 3.这个利润是可以被分解的 7 1 5 10 利润: -6 4 5 那么最大利润是4+5=9 其实就是1买入10卖出,但是我们可以原创 2022-05-20 16:39:09 · 154 阅读 · 0 评论 -
leetcode53. 最大子数组和
一:题目二:上码class Solution { /** 思路: 1.局部最优:两数之和大于0 2.整体最优:相加的和如果大于0的话,我们继续相加, */ public int maxSubArray(int[] nums) { int sum = Integer.MIN_VALUE; int count = 0; for (int i = 0; i < nums原创 2022-05-20 15:49:16 · 111 阅读 · 0 评论 -
leetcode51. N 皇后(java详解)
一:题目二:上码class Solution { /** 思路:1.先说我们选用的数据结构;我们是选取的是List<List<string>> ans 来存每次的结果; 我们在创建这个二维矩阵的时候用的是char的二维数组,那么的话等到我们得到一种 可行解的时候 将char的二维数组每一行转换成 String 并存入 ans 中 2:判断可行性原创 2022-05-17 17:50:11 · 274 阅读 · 0 评论 -
78. 子集022(回溯法)
一:题目给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]]提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums 中的所有元素原创 2021-11-11 21:30:14 · 102 阅读 · 0 评论 -
40. 组合总和 II021(回溯法)
一:题目给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,2,1,2], targ原创 2021-11-11 21:10:37 · 80 阅读 · 0 评论 -
7-3 符号三角形 (10 分)(思路+详解)
一:题目 Come 宝 !!!输入格式:第一行符号个数n输出格式:符合要求的三角形个数输入样例:4结尾无空行输出样例:6二:思路思路:1.如果我们确立的第一行的符号是什么 ,那么我们就可以基本上确定我们的符号三角形是什么因为当第一行确定的时候,那么接下来的行就是按照同号为’+’ ,异号为’-’,来填写2.在这里我们选择的解的空间是子集树(因为我们树每次都是’-’,要么是’-’)3.具体步骤1>:递归函数的参数backtacking()2>:输出的 结果原创 2021-11-08 22:20:37 · 2393 阅读 · 3 评论 -
7-2 批处理作业调度 (10 分)(思路+详解)
一:题目:宝宝 你要永远开心,下雪了,多穿点,输入格式:第一行输入作业个数n。第二行输入各任务在机器一上的完成时间。第三行输入各任务在机器二上的完成时间。输出格式:最短完成时间和输入样例:32 3 21 1 3结尾无空行输出样例:18二:思路分析题意:题目是批量处理作业调度,那么我们可以得知,这是让我们完成一个作业之后再去完成另一个作业思路:1.姑且先给我们的作业边上序号 a,b,c三个作业,那么我们可以得知关于这三个作业的的安排有6种方式,那么我们的问题就简单了原创 2021-11-07 13:06:17 · 3245 阅读 · 0 评论 -
7-1 装载问题 (10 分)(思路+详解)
一:题目 Come 宝宝!!输出格式:输出所有可行的方案数量输入样例1:3 50 5010 40 40结尾无空行输出样例1:4结尾无空行输入样例2:3 50 5020 40 40结尾无空行输出样例2:0二:思路1.这个解的空间选择的是子集树2.递归函数参数backtacking()把所有的可行解都记录下来3.返回的结果用一个vector<vector >ans:来存结果vector path:用来存每次的集装箱所装的船的序号将到达叶节点的原创 2021-11-06 21:08:37 · 3112 阅读 · 5 评论 -
7-4 N皇后 (28 分)(思路+详解)
一:题目 Come 宝!!!!!!!!!!!!在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。 你的任务是,对于给定的N,求出有多少种合法的放置方法输入格式:共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;输出格式:共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量输入样例:在这里给出一组输入。例如:185结尾无空行输出样例:在这里给出相应的输出。例如:19210原创 2021-11-05 21:37:27 · 1381 阅读 · 0 评论 -
51. N 皇后018(回溯法求解)
一:题目二:思路思路:1.这里在选择建树(也就是在选择解的空间上)是 子集树2.那么在结点上我们选择的是一个二维的矩阵就是将最后的结果落实到一个二维容器里也就遍历到叶节点时候一种可行解的情况3.写码思路:<1>:递归函数的参数:backtacking(int row,vector &v,int n)row:代表矩阵的行数vector &v:存放的是最后二维矩阵的可行解n:代表的是棋盘的宽度和长度<2>:输出结果这里使用 vector<原创 2021-11-05 21:20:40 · 110 阅读 · 0 评论 -
216. 组合总和 III017(回溯法求解)
一:题目二:思路1.总体来看这是一个解空间为k层的排列树 第一层为1~92.递归函数的参数和返回值1>:返回值:vector<vector > res每次的求解结果:vector path2>:参数:backtacking(int k,int n,int index,int sum)这里需要的index是 因为我们每次往下递归的时候 我们的返回在 缩小3.递归函数的终止条件为k == path.size(),这里可能使 结果并不满足 n == sum 但也要结束原创 2021-11-04 21:53:23 · 90 阅读 · 0 评论 -
77. 组合016(回溯法)
一:题目给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]二:思路强调组合:{1,2},{2,1} 这两个是等价的思路:1.经典回溯算法题,我们正常来思考这道题的时候 如果 k = 2,我们可能会用两层fo原创 2021-11-04 20:50:33 · 229 阅读 · 2 评论 -
46. 全排列015(回溯法求解)
一:题目示例 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.思路:1.这道题用的算法思想是回溯法,也就是穷举所有的可能,所以说回溯法也是没有办法的方法2.那么在这里我们选用的解的空间是 排列树 也就是从根节点每次往下的分支减少一个3.这里的在原创 2021-11-03 23:00:27 · 94 阅读 · 1 评论