摘要: 思路:简单搜索总结: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) 编辑
摘要: 不总结的话, 同一个地方会 WA 到死思路:状态压缩 DP.1. s 表示压缩状态, 若第 i 列放了棋子, 那么该列置 1, 否则该列置 0. 假如 s = 3(0x011) 那么表示棋盘的第 2, 3 列已经放了棋子2. dp[i][s] 表示前 i 行, 状态为 s 的摆放方案数 dp[i][s] = dp[i-1][s] 假如第 i 行不放棋子 dp[i][s] = dp[i-1][oldState] 假如第 i 行放棋子3. 棋盘的最大长宽为 8, 所以 s 的状态最多有 1 getOne(i); if( getOne.count() == c) res += record[i... 阅读全文
posted @ 2013-11-22 22:23 SangS 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 1. chrome 的 console 中不能添加本地文件 2. 下面的代码是在亚马逊的商品页面上添加一个 image, 点击之后触发 alert 函数. 其中 cBoxInner 是人工寻找到的标签 3. using callback JS 中有些函数是 asychronous 的, 比如 这种风 阅读全文
posted @ 2013-11-22 16:54 SangS 阅读(674) 评论(0) 推荐(0) 编辑
摘要: DescriptionThe cows have reconstructed Farmer John's farm, with its N barns (1 #include using namespace std;const int MAXN = 160;const int INFS = 0x3fffffff;int dp[MAXN][MAXN], U[MAXN], V[MAXN];bool vis[MAXN];void treedp(int u, int vol, int n){ for (int v = 0; v = 0; --v) { int ... 阅读全文
posted @ 2013-11-21 00:12 SangS 阅读(217) 评论(0) 推荐(0) 编辑
摘要: "I want you to use all your powers -- and all your skills. I don't want his mother to see himthis way..."脸上又长了两个痘。 我本希望天冷之后皮肤问题会好, 不过我失望了。 前几天翻了翻求医不如求己, 我放假在家那会, 妈妈总是让我去看去学。 我在家也翻过, 但是觉得那本书文字的风格不喜欢, 用了太多的比喻句 --- 医学这么严谨的东西, 怎么能用比喻句呢? 财经郎眼有一期节目, 讲到国内图书销量最高的都是健康 category 的, 想想也是心酸, 国内没有私人 阅读全文
posted @ 2013-11-20 12:48 SangS 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树, 树的叶子节点是用户, 每个用户会提供一定的收益, 其他节点都是中间节点. 中间节点之间和中间节点到叶子节点上都有耗费. 求解在总耗费小于总收益的情况下所能得到的最多用户数思路:1. 树形DP, DP[i][j] 表示在以第 i 个节点为根的树上上保留 j 个用户的最大收益. 这样, 求解 dp[i][j] >=0 时最大的 j 即可. 这个 dp 的定义没想到2. DP[i][j] = min(DP[i][j], DP[i][j-k]+DP[v][k]-c), c 表示节点 i 到节点 v 的耗费总结:1. 初始化时, dp[u][0] = 0, dp[u][else 阅读全文
posted @ 2013-11-20 11:42 SangS 阅读(230) 评论(0) 推荐(0) 编辑