搜索
今天没吃药
这个作者很懒,什么都没留下…
展开
-
HDU1027 - Ignatius and the Princess II (深搜)
题目链接思路 代码 思路要想得到的数字最小,那么小的数字就应该在前面,按照小的数字先进行访问的规则得到的第 mm 个数字就是第 mm 小的。具体细节看代码。代码#include <cstdio> #include <cstring>using namespace std;int num[1010], maxn, m, count; bool vis[1010], flag; void dfs(int原创 2015-09-02 14:35:32 · 451 阅读 · 0 评论 -
HDU1253 - 胜利大逃亡 (广搜)
题目链接思路 代码 思路广搜,求最短路。这道题的数据让我有点无语,应该是路径相对来说比较单一。不需要指导函数来优化方向,用了优先队列和估价函数反而超时了(可能是浪费在各种操作和函数传递上面了吧,也有可能是我写题的方式不对)。 用普通的队列,再把各种函数调用也降到最低,才勉强过了。代码#include <iostream> #include <cstring> #include <cstdio> #原创 2015-12-01 15:01:33 · 358 阅读 · 0 评论 -
HDU1240 - Asteroids! (广搜)
题目链接思路将普通的迷宫最短路推广到三维,数据量比较小,思路和步骤与二维迷宫求最短路一致。 不过在加一个坐标,对于这道题来说,需要注意的是坐标的表示方式,题中的坐标为列行层。POJ2225 同样的题代码#include <iostream> #include <cstdio> #include <cstring> #include <queue>using namespace std;struct原创 2015-10-15 23:55:15 · 549 阅读 · 0 评论 -
POJ2676 - Sudoku (深搜)
题目链接思路题意就是让完成数独游戏。 从第一个格子开始,依次尝试各种可能。当前节点填入的数字,不能与当前行,当前列,当前九宫格中现存的数字重复。这是最基本的思路,很容易超时,不过这道题的数据比较特别。倒着搜,也就是从最后一个节点开始尝试,会非常快。下面这个是从前面搜的,思路比较简单,几乎是飘过。 还有一道几乎一样的题,POJ - 2918代码#include <iostream> #includ原创 2015-10-13 23:28:26 · 604 阅读 · 0 评论 -
HDU1010 - Tempter of the Bone (搜索+剪枝)
题目链接 : HDU1010 - Tempter of the Bone 思路 代码 思路在最基本的走迷宫上加了一个固定步数的限制。在原先的代码中并不需要太多的改变,将成功推出条件更改一下。将这个表格,从上到下,从左到右填入数字 1,2,3……。观察就会发现,奇到奇,偶倒偶都需要偶数步,否则需要奇数步,这样的话就可以在搜索前加上一个判断。如果不符合这个条件的话,就是完全不可能的。这样进行剪枝后,还是原创 2015-10-15 18:03:08 · 369 阅读 · 0 评论 -
HDU1241 - Oil Deposits (深搜)
题目链接思路dfs求联通块。代码#include <iostream> #include <cstdio>using namespace std; const int maxn = 100; int n, m; int xx[] = {0, 1, 1, 1, 0, -1, -1, -1}; int yy[] = {1, 1, 0, -1, -1, -1, 0, 1}; bool maze[maxn]原创 2015-10-15 23:54:11 · 403 阅读 · 0 评论 -
HDU1045 - Fire Net (深搜)
题目链接思路 代码思路这道题其实是一道很经典的二分图匹配问题,在我看了后准备放弃的时候,发现这道题的数据量最大是 4 ,所以这就给我们暴搜提供了可能。最多只有16个方块,所以直接从第一个开始枚举,以后的每一步都分两种情况,放和不放,在最后出界的时候记录一下最大值就行了。具体实现见代码代码#include <cstdio> #include <algorithm>using namespace std原创 2015-09-05 23:56:14 · 375 阅读 · 0 评论 -
HDU1016 - Prime Ring Problem (简单搜索)
题目链接思路 代码思路这是一道简单的搜索题,简单说就是一位一位去试,一位一位地填上数字,看是否满足条件,具体看注释。代码#include <cstring> #include <cstdio>using namespace std;// 素数表,数据较小直接打表也可以 bool prime[41]; void init() { memset(prime, true, sizeof(prime原创 2015-08-31 15:25:42 · 343 阅读 · 0 评论 -
HDU1026 - Ignatius and the Princess I (广搜+优先队列)
题目链接思路 代码 思路这道题的思路其实是很简单的,就是一个广搜,找最 短 路,区别就是在每个方格待的时间是不同的,所以需要一个优先队列来保证每次访问的都是已花费时间最小的,而且在每次访问节点时,都要将当前节点的信息更新为最小时间花费,还要记录上一个节点的坐标,最后利用栈来调整输出顺序。 (PS:基本功太差,所以当我花费很长时间将这道题调试正确的时候,我的内心是崩溃的。)代码#include <i原创 2015-09-02 01:35:03 · 319 阅读 · 0 评论 -
HDU1015 - Safecracker (深搜)
题目链接 思路 代码 思路这道题的题意刚开始理解错了,以为每一个字母的权重是所给字符串中的顺序(论英语的重要性)。每个字母的权重还是字母表中的权重,AA 还是 1 ZZ 还是 26 。他给的字符串的顺序就没有什么用,只是确定了哪些字符可选。相当于有五个空,把26个字母中的一部分逐个尝试填入。实际上就相当与5个for循环。又因为多种可能时,需要输出字典序最大的,所以只要在搜索时优先选择权值大的字母即可原创 2015-12-01 15:16:42 · 506 阅读 · 0 评论