
dfs和bfs搜索
文章平均质量分 65
时光爱客
明天是遥远的,我们只能从当下的努力中嗅出它的味道。
展开
-
百练 2574(八皇后DFS)
dfs经典问题,八皇后,经典中的经典,白书里面有介绍,用到了回溯法,规则是八个皇后不能相互攻击,当两个皇后在同一列或者同一行或者在同一个对角线上时两个皇后便会相互攻击,所以呢用到了一个visit数组来标记并用它来判断是否在同一列或者在主对角线#include#include#include int tot=0;int c[10],a[100];int visit[原创 2014-12-20 20:42:13 · 1050 阅读 · 0 评论 -
poj 3126 prim path bfs
去年选拔省赛时候的题目,给了两个素数,问每次修改一位上的数字,修改几次能达到目标数字。最近老是没有刷题的欲望。浑浑噩噩,这道简单的题目差点就放弃了,确实是搜索中比较简单的题目。每次只改变其中的一位,队列维护,记录一下距离就可以了。。。下午还有比赛,尽量做吧,无所谓啦。代码:#include#include#include#include#include#include#原创 2015-08-27 15:02:04 · 526 阅读 · 0 评论 -
uva 657 The die is cast(双重搜索)
搜索题以前做过几道,有一定的认识,首先这道题的难度是:读不懂题意。。。。看了看网上的题意:好像明白了点,就是说有几块区域,*连通(是四连通,上下左右)的区域代表骰子,其中可能有字符'X','X'可能叫做点数吧,字符'.'表示背景,不用管,就是让求一共有几块骰子以及他们分别表示的数是多少,每个骰子区域中'X'的连通个数代表点数,比如题上一共有4个骰子,第一个是两点,第二个是1点,第三个是原创 2015-07-21 20:12:51 · 563 阅读 · 0 评论 -
poj 3984 迷宫问题
做这道题其实我是想看看打印路径的方法,挺水的,看了网上别人的代码,打印路径基本上都是保存一下父节点,然后打印出它的坐标,我写的是递归一下,从后面向前找到起点,找的过程有点不一样,之前没保存,而是继续上下左右的找,估计是因为这个时间有点多,虽然在这道题上看不出来差别。。。无意中看到了盈神的博客,我做这道题将近比她晚了一年。。。代码:#include#include#include原创 2015-08-01 09:15:28 · 1147 阅读 · 0 评论 -
uva 784 Maze Exploration(简单dfs)
这道题看上去很麻烦,什么迷宫啊,门之类的,其实挺简单的,就是让把与 * 连通的都置为 # 包括 * ,直接dfs就可以了,不过我wa了好多次。。。最后竟然是多读了一个换行,忘了加getchar()了,gets()函数会把缓冲区里面的换行给读进去的。。。应该把换行去掉,血的教训啊。。。代码:#include #include#includeint dx[4]={-1,0,0,1原创 2015-07-22 09:03:55 · 775 阅读 · 0 评论 -
uva 439 Knight Moves 骑士移动
这道题以前写过,bfs,用队列,不多说了,上代码:#include#include#include#includeusing namespace std;int map[10][10];int visit[10][10];int dist[10][10];int dx[8]={-2,-2,-1,-1,1,1,2,2};int dy[8]={-1,1,-2,2,-2,2,-1,原创 2015-07-22 14:23:21 · 938 阅读 · 0 评论 -
uva 705 Slash Maze 斜线迷宫
唉,上午一直不在状态,都没有好好思考,基本上算是看的题解,切记做题一定要专注,一定要多思考,不能轻易的看题解了,这道题可以把'/'和'\'转化,用0和1表示,'/'表示为 :'\'表示为001100010010100001相当于扩大了三倍,最后结果除以三就ok了然后就可以用普通的搜索求了,还是连通问题,注意一点只要是遍历到处于边缘的0就说明这个一定不是环,w原创 2015-07-22 12:24:45 · 957 阅读 · 0 评论 -
uva 10004 Bicoloring(二染色)
这道题我始终还是看了题解,不过有进步的是我看了他的想法自己实现的,恩恩,就是要这样 ,一定得先有个正确的想法,这样才能做对题,敲代码之前想法就错了那么一定做不对题目的,我之前想的是只要存在环就不会实现去全部染色,其实是可以的,当这个环是奇数的时候就可以,偶数的时候不可以。所以我用的dfs每次遍历的时候遇到没有染色的就染色,遇到染过色的就判断一下是否是一样的颜色。贴代码:#inc原创 2015-07-22 16:09:52 · 686 阅读 · 0 评论 -
uva 10596 Morning Walk(欧拉回路)
这道题是神坑啊,花了我将近3个小时,本来敲的挺顺的,交上去就是wa,坑点真坑,原来是有的路口交叉点可以没有路通向它,无语,没有路通向也可以叫交叉点。。。。以后一定得考虑多种情况,用了bfs(vector做的)和dfs判断的是否连通,判断连通之后只需要再判断是否都有偶数个度就ok了,坑,真坑。bfs代码:#include#include#include#include#inc原创 2015-07-24 09:59:42 · 608 阅读 · 0 评论 -
uva 10305 Ordering Tasks(拓扑排序)
拓扑排序,不用判断是否有环,dfs挺简单的代码:#include#include#includeint map[105][105];int visit[105];int c[105];int n,m,t;void dfs(int x){ visit[x] = 1; for(int i=1; i<=n; i++) { if(!visit[i]&&map[i][x]=原创 2015-07-23 21:33:28 · 652 阅读 · 0 评论 -
hdu 5305 Friends dfs
这道题目是多校中的一道题,一直在我的书签待看中,不想看书啊不想看书,这几天都没有好好看书了,没正正经经想过题目,正好这次把它看看,先看的题解。。。我发现我对搜索还是有点兴趣的,今天晚上做做搜索。。。我之前就觉得dfs总是回加上回溯的,我还感觉dfs基本上都是两种情况,1.对点深搜,2.对边深搜思路:还是看的别人的思路,厚着脸皮写一下吧,这道题目最多有8个点,(8*7)/2=28条边,我们可原创 2015-08-26 16:26:31 · 600 阅读 · 0 评论 -
poj 1321 棋盘问题 简单dfs
这么简单一道题目,想了这么久,还wa了一次,不可饶恕啊,越来越觉得自己笨了,dfs搜索都快不会写了。。。逻辑混乱,一定得认真想题目,认真写代码:代码:#include#include#include#include#include#include#include#include#include#define MAX 0x7fffffffusing namespac原创 2015-08-26 19:12:14 · 847 阅读 · 0 评论 -
poj 1562(Deposits)水题(八连通)
这才是我第一次接触深度优先遍历的典型例子,看到小媛学姐说这不是典型的dfs,说没有回溯,像是并查集,但我却认为这才是最典型的dfs,回溯是不属于dfs不知道我这种想法对不对,这道题目是八连通问题,只要一直进行深度搜索就行了,确实是个水题。#include#include#includechar a[105][105];int step[8][2]={-1,-1,-1,0,-1,1,0,-1原创 2014-12-20 14:42:04 · 759 阅读 · 0 评论 -
zoj 2100(dfs深度优先遍历)
这个题和上一题类似,都是回溯,用的方法基本上相同了,其实我是先做得得这道题,回溯+递归,深度优先遍历,是看了别人的代码才写出来的,明天继续练吧,深搜#include#include#includeint map[12][12];int step[4][2]={1,0,-1,0,0,1,0,-1};int m,n,ok;int travel(){ for(int i=1;i<=n原创 2014-12-17 23:45:04 · 792 阅读 · 0 评论 -
zoj 1091 Kniget Moves(bfs)
确实写了几道广度优先遍历之后,这种题目很容易就可以写出来了,这个题目只是让求出最短路径而已,并没有让把路径给打印出来,所以呢,是深度优先遍历中比较简单的题目啦,不过这道题目好像没有说骑士怎么走法啊,还好看了学姐的博客,和象棋里面的马走法一样,是一个‘日’字,所以呢,一共有八种情况,慢慢遍历就可以了,都这么晚了,该睡觉了,广度优先遍历就先到这吧,算是掌握了,明天开始深搜吧,继续完善自己#includ原创 2014-12-17 00:14:13 · 858 阅读 · 0 评论 -
poj3278广度优先搜索(BFS)
哎,还是在看了人家的代码情况下才做出来的,没事,能学会就行啦,用的是c++上的stl中的函数,定义的队列,比C语言上自己定义好用多了,嘿嘿,poj上的题目真不简单,比其他oj要难我觉得,起码是比hdu oj的要难,毕竟这是北大的,总是不会单纯的考察某个方法好像,这个题就有好多细节要考虑的,比如说时间问题,比如说要开数组大小问题,还有,不能把所有的数都存进去,否则可能会RE,明天继续找bfs练练原创 2014-12-12 23:57:17 · 1107 阅读 · 0 评论 -
poj 1111(Image Perimeters DFS)
这道题其实我都没有看懂啥意思,也没太仔细看,就想着看看博客中某yuan博客中是否说出了它的题意,没想到一不小心看见了求周长的方法,原来Perimeters就是周长的意思啊!!!旁边有几个点就给周长加一咯,就加了这一个功能而已,之前先用dfs找出八连通全部块数就可以了。#include#include#includechar a[105][105];int step[原创 2014-12-20 15:52:17 · 767 阅读 · 0 评论 -
poj 2245lotto(dfs)
A题的感觉是真爽啊,昨天大致看了看这道题目,觉得挺不容易的,今天仔细想了想,没想到还挺简单的,经典的深度优先遍历,加回溯,好像深度优先遍历基本上都会跟回溯连在一起诶,是我理解错了么?难道深度优先遍历本身就有回溯这部分?我觉得深度优先遍历就是遍历到最后的,要是没有找到答案,或者还想找其他的答案,就要进行回溯了,这题不解释了,好好想想吧,挺简单的,明天考四级了,英语听力其实压根听不懂诶,对于河南考生,原创 2014-12-19 23:21:58 · 773 阅读 · 0 评论 -
FZU escape(两个bfs)
题目链接:点击打开终于把它给过了,wa了好多好多次,一个页面基本上都是我提交的wa就因为没有判断准确符号问题,这道题是按着网上的答案来写的,思路:这道题不是简单的bfs问题,因为每个格子时刻在变化着,它可以走也可以不走,所以呢,我们需要先把每个格子可以走的时间算出来,算出他们被岩浆覆盖时的时间,然后就可以判断能不能走该格子了,先用一个bfs来与处理一下岩浆蔓延到每个格子的时间,再用原创 2015-05-05 09:22:19 · 499 阅读 · 0 评论 -
poj 1154(dfs深度优先遍历)
今天开始做深度优先遍历了,感觉有点生疏,基本上这种搜索都会用到回溯法,还有递归,确实是不好理解,所以我并不是自己独立完成的,但是现在基本上也算了解了,明天继续深搜,这道题就是典型的深度优先搜索,用到了回溯,求的是最长路径,所以就用max时刻更新就行了。#include#include#includeint map[30][30];int visit[500];int step[4][原创 2014-12-17 23:24:06 · 805 阅读 · 0 评论 -
poj3414(bfs广度优先搜索)
PotsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 10197 Accepted: 4301 Special JudgeDescriptionYou are given two pots, having the volume of A and B liters respectively. The follo原创 2014-12-15 19:13:15 · 657 阅读 · 0 评论 -
poj 2386(Lake Counting)DFS 水水,,潮水
终于碰见一道原题了,这是在书上看到八连通的例子啊,哈哈,做了前面几个题目,这道题只是稍微在前面的基础上改了几个字母而已,我也可以说它是水题了,嘿嘿,加油,让更多的题目成为水题#include#include#includechar a[105][105];int step[8][2]={-1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1};void dfs(int原创 2014-12-20 16:16:17 · 643 阅读 · 0 评论 -
hdu 5285 wyh2000 and pupil(二染色)
第一次用vector解得题,值得纪念,这道题是二染色问题,我用bfs解得,就是染色,判断,计数问题,其实挺简单的,就是得判一下特殊情况,当n人的时候就是一个组是n-1,另一个组人数为1上代码:#include#include#include#include#include#include using namespace std;int visit[100005];i原创 2015-07-23 20:22:26 · 757 阅读 · 0 评论