DFS
文章平均质量分 66
wnjason
这个作者很懒,什么都没留下…
展开
-
LeetCode---Restore IP Addresses
题目大意:给出一个仅包含数字的字符串,找出该字符串所有可能形成的IP地址。 算法思想: 采用深度优先搜索。 1.当遍历到字符串的末尾且组成了IP的四个部分时形成一个有效IP。 2.深搜过程中去除不能形成有效IP的情况。字符串的长度-遍历起点剩余步骤数的总长度。 3.从每个起点开始计算其后3位形成的数值,如果小于255则是有效的将当前字符放入临时IP且进行下一步骤的搜索。如果值为0则终止计原创 2015-12-09 14:27:11 · 334 阅读 · 0 评论 -
LeetCode---Word Search
题目大意:给出一个二维字符数组和一个字符串,判断该字符串是否可由数组中水平或竖直方向的临近字符组成。 算法思想: 1.遍历字符数组的每一个位置,将此位置作为字符串搜索的起点,然后经行深度优先搜索。 2.深度优先搜索的过程中,若当前已搜索满足条件的字符数是否和字符串的长度相等返回真值,否则看搜索位置是否合法,是否位访问,是否该字符等于字符串中对应的字符; 然后递归的进行该位置的上下左右四个方原创 2015-12-10 20:46:57 · 332 阅读 · 0 评论 -
LeetCode---Palindrome Partitioning
题目大意:给出一个字符串,对该字符串进行各种切割,使得切割后的每个子串是回文,找出所有的情况。 算法思想: 整体上采用深度优先搜索的思想。遍历字符串的每一个元素,判断从该元素处断开是否是一个合法方案(即构成回文)若是则递归搜索剩下一部分字符串的可行方案。 代码如下: class Solution { public: vector > partition(string s) {原创 2015-12-04 17:42:32 · 274 阅读 · 0 评论 -
LeetCode---N-Queens II
题目大意:给出N个皇后,放在N*N的棋盘上使其彼此间不能相互攻击。找出所有不同的方案数。 算法思想: 1.整体思想如LeetCode---N-Queens 2.只需记录方案数即可,每找到一种方案计数加1. 代码如下: class Solution { public: int totalNQueens(int n) { this->columns=vector(n,原创 2015-12-07 20:39:34 · 277 阅读 · 0 评论 -
LeetCode---Sudoku Solver
题目大意:编写一个程序解决数独问题,要求填满表中的空白位置,使得其所在的行和列以及所在的宫没有相同元素。 算法思想: 1.遍历该表格,寻找空白位置。 2.对于每个空白位置,枚举放置1~9这9个数字,并判断是否有效且递归深搜。 3.还原空白位置。 4。如果此时没有可行方案返回false 5.遍历完表格返回真。 代码如下: class Solution { public: bool原创 2015-12-25 11:38:10 · 350 阅读 · 0 评论 -
LeetCode---N-Queens
题目大意:将N个皇后摆放在N*N的棋盘上,要求N个皇后彼此间不能相互攻击。 算法思想: 采用一个数组C[n]记录每一行皇后所在位置的列下标,一个数组column[n]记录当前局面以后皇后所在的列,然后用两个数组main_dialog[2*n]和anti_dialog[2*n]标记皇后所在位置的主副对角线(通过规律可知,同一主对角线上的坐标其横纵坐标差值恒等,同一副对角线上的坐标横纵坐标和值恒等原创 2015-12-07 20:05:58 · 280 阅读 · 0 评论 -
LeetCode---Generate Parentheses
题目大意:给出一个非负整数n,表示有n对括号,输出其所有合法的括号排列。 算法思想: 一步一步的构造括号序列。依据两个原则:1.当做扩号数小于N时可以添加左括号;2.当右括号数大于N时可以添加有括号。最后当左括号数等于N时表明产生一个合法排列,将括号补充完整。采用深度优先搜索找出所有可行方案。 代码如下: class Solution { public: vector genera原创 2015-12-08 11:24:19 · 320 阅读 · 0 评论