![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
回溯
章明狼
IT入门手残学生党一枚、Typora忠实爱好者
展开
-
C++ 【回溯】经典例题——N皇后
N皇后题目[leetcode 51]n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。皇后的攻击范围为:下图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”原创 2020-08-21 15:45:09 · 956 阅读 · 0 评论 -
C++【递归】生成合法的括号形式
生成括号题目[leetcode22]数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ]思路按照括号的原则:先有 ‘(’ ,才能有再有 ‘)’ ,并且以 ‘)’ 为结尾,这样的形式才能满足题目要求,也就是说,满足以下格式:①’(’ 的个数要比 ‘)’ 多时,’)’ 才能放入。②左右括号的数量都不能大于等于n。二叉树展原创 2020-08-21 15:03:06 · 652 阅读 · 0 评论 -
C++ 【回溯】如何在一组数中找到和为目标值的子集
组合数之和2题目[leetcode40]给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7],[1, 2, 5],[2, 6],[1, 1, 6] ]原创 2020-08-19 17:44:51 · 1441 阅读 · 0 评论 -
C++【回溯】or【位运算】求数组的所有子集
求子集题目[leetcode78]给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[] ]思路假设数组nums的元素个数size()为n个,那么其子集的个数就为2n个,其意义为这n个元素是否放入到一维数组中,共有2n中可能,再将这2n种可能的一维数组放入到二维数组中,便完成了所有子集的求取。那么问题来了:原创 2020-08-19 16:32:05 · 2215 阅读 · 0 评论