搜索和回溯
文章平均质量分 64
G_rass
这个作者很懒,什么都没留下…
展开
-
poj 1088 滑雪
题目链接点击打开链接参考自某大神思路,开一个结构体数组,储存点的位置及高度,一个数组,储存每个点的高度,一个数组,储存每个点的对应的最长下降序列长度,先对所有点按高度进行排序,然后从低到高检查每个点,在该点高度分别小于周围四个方向的点的高度且该点最长下降序列的长度大于对应方向的点的长度的情况下,对应点的长度等于该点的长度+1 ,最后求出长度的最大值#include#include#in原创 2015-07-20 14:17:06 · 338 阅读 · 0 评论 -
Pool in minecraft
Description 在宇宙的另一边有个很奇怪的世界,我们称它为minecraft,在minecraft星球物体并不是由原子构成的,也不是由夸克组成的,而是由“方块”拼成的,不管你信不信,反正我是信了。来自minecraft的Mr.P在他家建造了一些储水池,该储水池全部都是由1x1x1的立方体拼成的,下图是Mr.P在微博上晒的一张图片。 为了方便地球人理解,M原创 2015-08-13 13:45:42 · 488 阅读 · 0 评论 -
zoj 1008 Gnome Tetravex
题目链接题意 有一些卡片上下左右均有数字,要求将这些卡片拼成正方形,并且相接部分数字相同:思路:dfs深搜,但要注意如果直接暴力的话,深搜是一个全排列问题,计算量最大是为25!,这个数字是非常大的,但如果对卡片进行分类,即上下左右均相等的卡片分成一类,这样全排列的计算量将大大减小,这里我测试了两种思路稍有不同的代码,如下:经测试第二种稍微快一点,应该是是因为跳出的较快, 总的来说原创 2015-07-23 22:49:48 · 413 阅读 · 0 评论 -
hdu 1515,zoj 1004 Anagrams by Stack
题目链接题意:有两个单词,能否通过对第一个单词进行出栈和入栈操作,输出第二个单词,如果能则输出全部相应的出栈入栈操作,出栈为o,入栈为i,思路:dfs深搜,注意一些条件的判断,看了别人的思路后自己写了一遍,输出时却出现的只输出一组解的情况,百思不得其解,一遍又一遍比对及实验后(恨不得直接把人家的代码复制过来),才发现是在对dfs深搜后的恢复上出现了问题,本应先y--,然后入栈b[y],原创 2015-07-23 23:09:53 · 564 阅读 · 0 评论 -
zoj 1204 Additive equations
题目链接题意:给定一个集合,若集合中任意n个元素相加的和仍属于集合,则输出这个等式思路:由于按等式的长度进行输出,所以按照相应的长度选择dfs搜索的深度,找出合适的解代码:这里的1和2代表不同的选择(并没有什么区别),只是需要十分注意这些边界问题,#include#include#include#includeusing namespace std;int n;原创 2015-07-23 22:22:38 · 791 阅读 · 0 评论 -
csu 1660 K-Cycle
题目链接‘题意:给出一个无向图,问是否存在闭环其长度为k;思路:对每个点dfs,开一个一个数组记录搜索到的点的深度,搜索到以搜索过的点时检查与当前的深度差是否为k本来写了一堆返回及恢复的东西,结果并没有什么卵用,唉,好难理解啊#include#include#includeusing namespace std;int n,m,k,flag;int a[55][55];原创 2015-07-23 23:20:48 · 523 阅读 · 0 评论 -
poj 2965 The Pilots Brothers' refrigerator
思路:和上一题poj1753非常类似,思路大致相同,所以我代码直接用的1753题的稍微改了下,输出看起来有点不自然,另外这里要打印路径,所以也不能选择bfs了(poj1753是可以用bfs的)需要注意的是,本题非常容易超时,之前因为翻转函数写的有点啰嗦就超时了,改简洁之后才907ms惊险飘过#include #include #include #include using原创 2015-10-22 23:43:29 · 311 阅读 · 0 评论 -
poj 1753
思路:根据分析每个格子只能翻转一次,翻转多次无意义,共16个格子,最多2^16次方个状态,可以枚举加dfs,具体见代码开始看题毫无头绪,然后就直接找题解了,这个以后要改啊。。。 感觉dfs的回溯返回自己理解的还是不够透彻,还是要多多思考这其中的关系#include #include #include #include using namespace std;char map[原创 2015-10-22 23:04:57 · 385 阅读 · 0 评论 -
coj 1259: 跳跳
思路:题目意思比较明确,思路是采用优先队列每次取出次数最小的点进行bfs,这里要注意一个坑,(因为这个wa了n发。。。)遇到2~9的点时,要立即入队所有值相同的点,而不是先把这个点入队等过一段时间排到这个点时再把相同值的点入队,这里举一个简单的例子S0033E000这里第一次入队(0,1)位置的0和(1,0)位置的3,如果不将另一个3入队,出队先出0的话,这时另一个3就会被访问,但原创 2016-01-14 02:14:06 · 438 阅读 · 0 评论