递归-搜索专题
文章平均质量分 52
NowAndForever
这个作者很懒,什么都没留下…
展开
-
poj-2905 The Pilots Brothers' refrigerator
http://poj.org/problem?id=2965 题目跟1753 差不多,这是原创 2014-06-04 09:01:58 · 537 阅读 · 0 评论 -
hdu-1010 Tempter of the Bone
http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意:在n*m的地图上,标记为S的为狗狗的起点,D为门,问能否恰好以给定t的时间到达D,能就输出YES,否则NO,每个点只能走一次。 思路:dfs问题,找到一条长度恰好为t的路径,不一定是最短路路径,所以不能单纯用bfs。 但是 一般dfs会超时,所以要剪枝,这里主要用到奇偶性剪枝,参考链接:原创 2014-09-12 23:01:58 · 569 阅读 · 0 评论 -
hdu-1015 Safecracker
http://acm.hdu.edu.cn/showproblem.php?pid=1015 题意:题目开始一大堆乱七八糟的东西,但是基本没多大用,只要提取出题目要用的信息就好,大概意思是给定长度5-12的字符串,然后给定一个目标值,问字符串是否存在长度为5并且满足式子 v - w^2 + x^3 - y^4 + z^5 = target 的子串,有就输出,没有就输出no solution,如原创 2014-09-13 20:21:18 · 490 阅读 · 0 评论 -
记忆化搜索
下面这句话转至某某大牛blog 1.记忆化搜索的思想 记忆化搜索的思想是,在搜索过程中,会有很多重复计算,如果我们能记录一些状态的答案,就可以减少重复搜索量 2、记忆化搜索的适用范围 根据记忆化搜索的思想,它是解决重复计算,而不是重复生成,也就是说,这些搜索必须是在搜索扩展路径的过程中分步计算的题目,也就是“搜索答案与路径相关”的题目,而不能是搜索一个路径之后才能进行转载 2014-09-14 16:08:20 · 602 阅读 · 0 评论 -
hdu-1016 Prime Ring Problem
http://acm.hdu.edu.cn/showproblem.php?pid=1016 经典 dfs问题:没有剪枝 218ms #include #include int n,vis[21],a[21]; bool is_prime(int x) { if(x==2||x==3) return 1; if(x==1) return 0; for(int i=2;原创 2014-09-13 23:32:09 · 482 阅读 · 0 评论 -
HDOJ搜索题(总计100题)
DFS(Depth First Search ) 一般是不用hash的,所以很多时候称之为”暴力”,也就是穷举所有情况,一般看几个我们OJ的dfs的版本的题目就可以模仿着做了,因为牵涉到递归,初学者学的时候最好能举一反三,理解其中真谛. DFS --- EASY(15) Tempter of the Bone Safecracker Prime Ring Problem Robot M转载 2014-09-03 15:15:09 · 855 阅读 · 0 评论 -
hdu-1045 Fire Net
http://acm.hdu.edu.cn/showproblem.php?pid=1045 题意:题目说在一个特殊的地图里面摆碉堡,但是不能在同一行或者同一列摆一个以上的碉堡除非中间隔了一堵墙。 思路:记住每一次到达最后一个点的可放碉堡数,更新最大值。 #include char map[5][5]; int n,m,max; int pd(int x,int y) { for(原创 2014-09-16 20:04:43 · 520 阅读 · 0 评论 -
hdu-1258 Sum It Up
http://acm.hdu.edu.cn/showproblem.php?pid=1258 题意:给定一个目标数t,和n个数,并且按非升序排列,问n个数里面有多少种情况之和等于t,并且按非升序输出。 思路:dfs三个参数,k,sum,num,k表示当前到这个数,sum表示当前数的和,num表示当前数的个数。麻烦一点的是判重,比如第一个样例3 1,只能输出一次。具体见代码。 #include原创 2014-09-16 22:50:00 · 562 阅读 · 0 评论 -
hdu-1312 Red and Black
http://acm.hdu.edu.cn/showproblem.php?pid=1312 题意:在图中给定一个人的起点,问他能达到的最多地方是多少,'.'表示能走,’#‘不能走。 思路:找出起点,直接扩展就好了。 #include #include char map[21][21]; int dir[4][2]={-1,0,1,0,0,1,0,-1}; int n,m,count; v原创 2014-09-17 16:41:07 · 700 阅读 · 0 评论 -
hdu-1142 A Walk Through the Forest
http://acm.hdu.edu.cn/showproblem.php?pid=1142原创 2014-05-29 22:46:48 · 702 阅读 · 0 评论 -
hdu-1078 FatMouse and Cheese(记忆化搜索)
http://acm.hdu.edu.cn/showproblem.php?pid=1078 题意:老鼠在n*n的每个方格上放置了奶酪,初始位置在(0,0),每次只能移动小于等于k的位置,并且移动后的位置的奶酪数要比当前位置的奶酪数多,问老鼠能得到的最多奶酪数是多少。 思路:典型的记忆化搜索,记忆化搜索=搜索的形式+dp的思想, 记忆化搜索的思想是,在搜索过程中,会有很多重复计算,如果我们能记原创 2014-09-20 22:32:31 · 560 阅读 · 0 评论 -
hdu-2256 How Many Equations Can You Find
给你一串数,让你通过增加加号或者减号使得经过运算得到另外一个数,问有多少种方法。 我的做法是枚举每个参与运算的数,DFS下就好。注意第一个数前面不能有符号。原创 2014-09-19 16:44:56 · 429 阅读 · 0 评论 -
poj-1753 Flip Game
http://poj.org/problem?id=1753 一道枚举+搜素的经典题原创 2014-06-03 17:48:56 · 570 阅读 · 0 评论 -
Problem 2169 shadow
Problem 2169 shadow Accept: 141 Submit: 421 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description YL是shadow国的国王,shadow国有N个城市。为了节省开支,shadow国只有N-1条道路,这N-1条道路使得N个城市连通。某一年,s原创 2014-06-10 16:09:05 · 744 阅读 · 0 评论 -
高级搜索题集
//转载地址:http://blog.csdn.net/shahdza/article/details/798604 基础的搜索BFS和DFS,自己找题切吧... 高级搜索的题集就在下面,自己看着办吧... 努力爆搜,努力剪枝吧~~~ 【Level 1】 HDOJ-1429 胜利大逃亡(续) HDOJ-1885 Key Task HDOJ-1226 超级密码 HDOJ-16转载 2014-05-28 16:02:07 · 707 阅读 · 0 评论 -
hdu-1429 胜利大逃亡(续)
http://acm.hdu.edu.cn/showproblem.php?pid=1429 第一次接触搜索+状态压缩 看了大神的题解 勉强把题目弄懂了。 用二进制来表示手头的钥匙有哪些,100表示有第三把钥匙,111表示有第三、二、一把,搜索下一点时,如果该点为钥匙点,则可采用|运算来 模拟拾取,显然0001 | 1000 = 1001,同理,当为相应的门时采用&运算来模拟开启,例原创 2014-05-30 22:47:57 · 1078 阅读 · 0 评论 -
FZU-Problem 2150 Fire Game
Problem 2150 Fire Game Accept: 392 Submit: 1502 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description Fat brother and Maze are playing a kind of special (hentai) game on an N原创 2014-08-05 14:33:52 · 2262 阅读 · 0 评论 -
hdu-1342 Lotto
http://acm.hdu.edu.cn/showproblem.php?pid=1342 题意:以升序的形式给定k个数,输出从中挑选6个数满足升序的所有情况。 思路:两个参数,第一个保存当前搜索的位置,第二个保存个数。 #include #include int a[15],b[15],vis[15],k; void dfs(int ans,int num) { if(num==原创 2014-09-18 14:46:15 · 1207 阅读 · 0 评论 -
背包问题
Problem Description 简单的背包问题。设有一个背包,可以放入的重量为s。现有n(n件物品,重量分别为w1,w2,...,wn,均为正整数,从n件物品中挑选若干件,使得放入背包的重量之和正好为s。找到一组解即可。如果找不到输出“not found”。 Input 输入有多组数据,每组数据的第1行是物品总件数和背包的载重量,第2行为各物品的重量。 Output原创 2014-09-05 18:10:40 · 484 阅读 · 0 评论 -
找数-递归
我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n 1. 不作任何处理; 2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 输入一个数:n 输出:满足条件的数的个数 输入 6 输出 6 注:6个数分别是: 6 16 26原创 2014-09-05 18:11:32 · 994 阅读 · 1 评论 -
hdu-2660 Accepted Necklace
http://acm.hdu.edu.cn/showproblem.php?pid=2660 题意:给出宝石的数目n,制成项链所需的宝石个数k,然后再给出每个宝石的价值与重量,还有母亲会接受的最大重量,求出在小于等于最大重量范围内,项链的价值尽可能大。 思路:首先n比较小,可以用搜索解决,但是需要剪枝,不然会超时,剪枝就是每次保存上一次搜索到的地方,避免重复。当然 这还是一个二位费用的背包问原创 2014-09-17 20:20:37 · 563 阅读 · 0 评论