摘要:
这题和LeetCode第51题做法一样,只不过不是记录具体方案,而是个数。分析见第51题。 代码如下: class Solution { int res = 0; int n; vector<string> path; vector<bool> cols, diagram, anti_diagram 阅读全文
posted @ 2020-07-05 23:40
machine_gun_lin
阅读(77)
评论(0)
推荐(0)
摘要:
题意是给定一个N × N大小的棋盘,求不同的N皇后方案的个数。N皇后的方案指,N个皇后放在棋盘上,互相不能攻击到。 国际象棋里,皇后可以横竖斜走若干步,所以一个方案是合法的,必须满足任意一个皇后所在的行、列、对角线、斜对角线都没有其他皇后。 我们要求的就是这样的方案的个数。 由于每行只能放一个皇后, 阅读全文
posted @ 2020-07-05 23:16
machine_gun_lin
阅读(153)
评论(0)
推荐(0)
摘要:
题意是给定一个已排序数组,我们需要原地修改数组,使得相同元素最多留下2个,并且返回新的数组的大小。 这题还是双指针做法,最开始左右指针都在0位置,左指针表示新的已排序数组的末尾元素位置, 右指针从左向右遍历逐个判断元素是否可以加入“新数组”中。 由于相同元素最多只能留两个,且数组是已排序的,所以对于 阅读全文
posted @ 2020-07-05 02:32
machine_gun_lin
阅读(98)
评论(0)
推荐(0)
摘要:
又是一道DFS回溯,枚举二维字符数组的所有字符作为起点,判断以这个字符作为起点DFS是否能得到word,可以就返回true, 如果所有起点都不行就返回false。 DFS函数就按照方向进行搜索,上下左右是个方向分别去搜,返回的情况有: 1. 某方向下一个字符和word的下一个字符不相等,回溯,返回f 阅读全文
posted @ 2020-07-05 02:11
machine_gun_lin
阅读(113)
评论(0)
推荐(0)
摘要:
方法一(DFS回溯) 求出所有可能的子集,就是要遍历一遍DFS递归树,把所有子集全都压入结果数组中。 class Solution { vector<vector<int>> res; vector<int> onePath; //onePath是递归树的一条路径(一个子集) public: vec 阅读全文
posted @ 2020-07-05 01:06
machine_gun_lin
阅读(105)
评论(0)
推荐(0)
摘要:
DFS回溯,从左至右选数,加入一个一维数组oneCombination中,当oneCombination的大小等于k,表示已经选了k个数, 将oneCombination压入结果数组res中。 DFS的函数签名可以写为void DFS(int n, int k, int startPos, vect 阅读全文
posted @ 2020-07-05 00:02
machine_gun_lin
阅读(78)
评论(0)
推荐(0)