摘要: 思路:简单搜索总结:1. 第一次做的时候忘记加 visited 数组了2. 做完 kedebug 的搜索题, 简单搜索问题都变得像小绵羊一样温顺了3. 还是 dfs 框架. 书上所写的 dfs 框架, 一般由 DFS, dfs 两个函数拼成, DFS 负责接收参数和变量初始化, dfs 负责一般情况下的遍历. 两个函数连用比仅用一个 dfs 要好的多, 因为减少了很多判断语句. 下面的代码, 相当于 DFS+ dfs.代码:#include #include #include using namespace std;const int MAXN = 200;bool visited[MAXN] 阅读全文
posted @ 2013-11-23 22:14 SangS 阅读(599) 评论(1) 推荐(0) 编辑
摘要: 思路:简单搜索总结:dfs 框架1. 需要打印路径. 在 dfs 函数中假如 vector 变量, 不用 & 修饰的话就不需要 undo2. 不需要打印路径, 可设置全局变量 ans, 在 dfs 函数中对 ans 判定, 判定的位置尽可能的多3. 对 tree 遍历, 有两种办法, 第一种是 if(root == NULL) 第二种是 if(root->left == NULL), 我一般用第二种, 效率比较高, 但是在第二种 return 1, 第一种 return 04. Leetcode 给出的测试用例经常会有空的输入, 要注意5. path sum 中树节点的 val 阅读全文
posted @ 2013-11-23 22:12 SangS 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 思路:二分法总结:ull != int * int代码:#include using namespace std;class Solution {public: int sqrt(int x) { unsigned long long l = 0, r = x, mid; unsigned long long multi; while(l > 1; multi = mid * mid; if(multi == x) { return mid; }else if(multi > x) { r = mid -1; }else { l = m... 阅读全文
posted @ 2013-11-23 17:25 SangS 阅读(544) 评论(1) 推荐(0) 编辑
摘要: 思路:自动机, 每次输入一个空格, 就进行一次状态转换逆序遍历的效果应该会更好, 不过我就是简单的正序遍历了下练练自动机代码:#include #include using namespace std;class Solution {public: int len; void countWord(const char *s, int &i, const int &n) { len = 0; while(s[i] != ' ' && i < n) { len++; i++; } } int lengthOfLastWord(const cha 阅读全文
posted @ 2013-11-23 16:56 SangS 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 思路:题目给出的测试数据范围比较小, 使用回溯就可以AC, 搞的我也没有兴趣去研究高效解法了总结:刚开始, 本以为用棋盘问题的状态压缩 DP 就可以解决, 但做完 N-queen 才发现多个皇后并不能在同一条斜线上, 状态压缩的解法似乎就不好用了代码:#include #include #include using namespace std;class Solution {public: int N; vector pos; int result; bool visited[10]; bool attack(const int &row, const int &col) { 阅读全文
posted @ 2013-11-23 16:42 SangS 阅读(438) 评论(0) 推荐(0) 编辑