总Time Limit:  10000ms  Memory Limit:  65536kB 有一个奇妙的口袋.总的容积是40,用这个口袋能够变出一些物品,这些物品的整体积必须是40.John如今有n个想要得到的物品,每一个物品的体积各自是a1,a2--an.John能够从这些物品中选择一些,假设选出的物体的整体积是40,那么利用这个奇妙的口袋.John就能够得到这些物品.如今的问题是,John有多少种不同的选择物品的方式. Input 输入的第一行是正整数n (1 <= n <= 20),表示…
描述有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an.John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品.现在的问题是,John有多少种不同的选择物品的方式.输入输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目.接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值.输出…
skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪. 由于滑雪的确非常刺激.但是为了获得速度.滑的区域必须向下倾斜.并且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底滑坡.区域由一个二维数组给出.数组的每一个数字代表点的高度.以下是一个样例  1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9…
HDU 1241 是深搜算法的入门题目,递归实现. 原题目传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1241 代码仅供参考,c++实现: #include <iostream> using namespace std; ][]; int p,q; void dfs(int x,int y){ land[x][y] = '*'; ][y]!= ][y] != ] != ] != ][y+]!= ][y-] != ][y-] != ][y+] !…
深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来. 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点. 广搜简单地说就是一层一层的搜,像水的波纹一样往外面扩散,扩散到最外层搜索也就完成了. prim最小生成树.Dijkstra单源最短路径算法都使用了类似广度优先搜索的思想. 拓扑排序就可以用深搜来实现,分解强连通分量也可以用深搜来实现(转置图加两次深搜) 我们实现广搜时需要用队列来辅助我们进行.实现深搜时使用栈来辅助我们进行,所以显而易见的用递…
Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Klein safe behind a painting in the second-floor library. Klein safes are extremely rare; most of them, along with Klein and his factory, were destroyed in Wo…
题目链接:http://codevs.cn/problem/1049/ 昨天的测试题里没有打出那可爱的迭代深搜,所以今天就来练一练. 这道题其实我看着有点懵,拿着题我就这状态↓ 然后我偷偷瞄了一眼hzwer的博客,啊♂,恍然大悟....... [思路] 根据迭代深搜的定义,我们这道题枚举要补上的黑格子数,最多是25格,所以循环ans从0到25就行,然后迭代, 只是在每一个坐标(x,y)的扩展中,下一次的扩展是当前这第x行剩下的和接下来的几行(避免重复操作) 然后就是在染色格子等于ans时chec…
因为前两天某网站的比赛一个深搜错了,我只得了3等奖,我找不到错误,给别的大佬看他们又嫌恶心.emm……,比赛结束后我自己反思了一下,深搜写错了该怎么办,或者说怎样避免写错. 首先,变量名不要太ex,比如比赛时那道深搜,我用了x,xx,xxx,y,yy,yyy等变量.当时觉得没什么,时候看看恶心死人了.如果你不小心记错了,找的时候面对一群x,那最好的方法就是重写了. 其次,我推荐大家深搜写错就重写一遍,尤其是长的.写起来恶心的.真的不好找,万一你走了一下神,然后让你在近百行代码里找bug,真的很让…
C . [ 例 题 3 ] 虫 食 算 题目解析 正解 : Dfs + 剪枝 依题意,把样例以加法的形式展现出来. 根据加法的性质,可以得出有两种情况:有进位和没有进位的. 而从百位到最高位的结果,又可能是有从上一位进过一的. 因为三个字符串的长度都为 n n n,所以最高位是没有进一的根据以上的结论,容易得出 A + B = E ∣ ∣ A + B + 1 = E A+B=E ~~~||~~~A+B+1=E A+B=E   ∣∣   A+B+1=E 代码思路:带有剪枝的深搜 Code #inc…
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 3014    Accepted Submission(s): 1323 Problem Description Now an emergent task for you…