第46题:
给定一个 没有重复 数字的序列,返回其所有可能的全排列。(来自LeetCode)
1、由(1、2、3)举例,先将1作为第一个,然后后面可以放2、3或者3、2;
第二次将2作为第一个,然后后面可以1、3或者3、1,将3作为第一个也一样;
从上面知道每次获得全排列内的某个元素时都是在数字序列中选择元素,,然后将所有的组合都列举出来;
那么直接利用回溯来穷举所有的例子,当每遍历完一阶段时都回溯到上一阶段来判定其他情况。
第51题:
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。
每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。来源:力扣(LeetCode)
皇后彼此不能相互攻击,也就是说:任何两个皇后都不能处于同一条横行、纵行或斜线上。
1、n个皇后,需要放置在n*n的棋盘上,且不能存在两个皇后在同一横纵斜线上,将所有的解决方案都返回;
可以每行的每列进行判断是否可以放置Q,这样一直递归往下判断,当第n行也放置了Q时,说明这种方案可行,加入结果集合中;
然后回溯到n-1行判断是否还有其他方案,没有就再次回溯上一层,每次将可行的方案都加入结果集中,最终得出所有的解决方案;
存放在结果集,返回结果集。