摘要: 所谓带状态改变是指:在搜索到某个位置的时候,状态发生改变,继续计算步数。 给一个例题: 蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家。花椰妹告诉他:“你家的钥匙被我复制了很多个,分别放在不同的地方。” 蒜头君希望能尽快回到家中,他需要首先取得任意一把钥匙,请 阅读全文
posted @ 2017-02-14 21:21 超级学渣渣 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 在c++编程中,用到迭代器的时候,往往不知道如何删除当前迭代器指向的元素。 erase函数: 返回下一个迭代器。 只使用vector的erase函数,记住,该函数是迭代器失效,返回下一个迭代器。 看下面的一个程序,删除值为4和7的元素,为什么只删除了4? 没有删除7,为什么? 上面的程序基本上属于弱 阅读全文
posted @ 2017-02-14 15:25 超级学渣渣 阅读(4402) 评论(0) 推荐(1) 编辑
摘要: 关于全排列,使用 C++ 的同学有一个福利,在 <algorithm> 库里面有一个生成全排列的next_permutation函数,可以直接调用。调用方法如下 1 #include <algorithm> 2 #include <stdio.h> 3 int main() { 4 int a[] 阅读全文
posted @ 2017-02-14 14:26 超级学渣渣 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。 例如,蒜头君手上有长度为 11,22,33,33 的4根木棍,他可以让长度为11,22 的木棍组成一条边,另外 22跟分别组成 22 条边,拼成一个边长为 33 的等边三角形。蒜头君希望你提前告诉他能 阅读全文
posted @ 2017-02-14 11:44 超级学渣渣 阅读(899) 评论(0) 推荐(1) 编辑
摘要: 在n个物品中拿k个,使得花费恰好为m。 典型的dfs,对每一个物品,可以选择拿与不拿,然后在判断下一个物品。 失败的dfs: 代码没有保存,只重写一下dfs函数的关键部分: 对每一个选和不选,都有30层深度。30^30,即使剪枝,优化也不大。 成功的dfs: 上面这样dfs才是类似一个二叉树,复杂度 阅读全文
posted @ 2017-02-14 08:56 超级学渣渣 阅读(331) 评论(0) 推荐(0) 编辑