BFS和DFS
文章平均质量分 52
Silent-Jy
生活是坚持出来的。
展开
-
BCLOJ-1530:迷宫超级简化版
描述 这是一道很简单的迷宫简化版: Kivi迷失在一个神秘的森林里,只有越过一些障碍,他才能逃出去~ 为了简化问题,森林可以简化为一个矩阵,矩阵里的元素只有0和1两个状态,0表示可以越过,1则表示有障碍,无法通过.Kivi一开始处在矩阵的(0,0)的位置,即第一行第一列的位置,而出口在最后一行最后一列的位置(测试数据保证初始位置和出口都是可以通行的,即为状态0). 现在的原创 2013-01-09 23:00:59 · 541 阅读 · 0 评论 -
HDU-1711:Sum It Up
/*DFS,这道题主要是去掉重复的等式,网上看了大神的方法- -,说是用叶子来判重- -。表示看不懂,回头再去理解,土方法,全部找出来再判断*/ #include #include #include #include #include #define N 14 using namespace std; bool Cmp(const int &a,const int &b) { return a原创 2013-01-17 18:42:19 · 520 阅读 · 0 评论 -
HDU-1253:胜利大逃亡
/*三维空间的BFS ,下面的程序只能勉强不超时。- -!*/ #include #include #include #include using namespace std; #define N 55 int mp[N][N][N]; int dir[6][3]={{0,0,1},{0,0,-1},{1,0,0},{0,1,0},{-1,0,0},{0,-1,0}}; int a,b,c,t;原创 2013-01-17 16:45:32 · 515 阅读 · 0 评论 -
HDU-1072:Nightmare
/*这道题的BFS中路径是可重复的,但有几个点不同,在重置时间那几个点上。 用BFS走过的路径是最短的,在到了重置时间点上,如果回过头来再走也不使时间增加的, 反而会增加出去的时间这样把重置时间的那几个点去掉后,由于时间是有限的。故可以再 有限步内结束。即避免了重复路径中不标志路径的死循环问题 */ #include #include const int N = 10; using name原创 2013-01-15 11:02:49 · 485 阅读 · 0 评论 -
NYOJ-92:图像有用区域
/*BFS,开始做的时候一直在小心地处理着长和宽- -,做完提交然后一直WA。 没想到开下面数组的时候长和宽还是反了。 */ #include #include using namespace std; const int W = 1500; const int H = 1000; int mp[H][W]; //之前写成mp[W][H]一直WA = =! struct Node { i原创 2013-01-15 14:40:56 · 1114 阅读 · 0 评论 -
NYOJ-27:水池数目
#include #include const int N=100; using namespace std; int n,m; int mp[N][N]; int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}}; void dfs(int si,int sj) { mp[si][sj] = 0; //这道题没有必要回溯,直接更改就可以了 int di,i,j;原创 2013-01-15 11:52:26 · 1159 阅读 · 0 评论 -
HDU-1242:Rescue
/*代码非常的乱- -! 几经修改- -,终于AC了*/ /*逆序开始搜索,因为有可能有几个求援朋友,最先找到的则为最近的*/ #include #include #include #include using namespace std; const int N=205; char mp[N][N]; int vis[N][N]; //用于判断有没走过 int dir[4][2] = {{-1,原创 2013-01-14 23:02:30 · 394 阅读 · 0 评论 -
HDU-1241:Oil Deposits
//DFS #include #include #define N 105 char mp[N][N]; int vis[N][N]; int m,n,cnt; int dir[8][2] = {{-1,-1},{-1,0},{-1,1}, //八个方向 {0,-1},{0,1}, {1,-1},{1,0},{1,1}}; void DFS(int x,int y) { v原创 2013-01-14 20:29:44 · 457 阅读 · 0 评论 -
ZSTU-1826:Square
/*DFS*/ #include #include #include #define N 24 using namespace std; int st[N],cnt,n,avg; int vis[N],flag; bool Cmp(const int &a,const int &b) { return a>b; } void DFS(int cnt,int len,int c) { if (原创 2013-01-14 17:44:42 · 444 阅读 · 0 评论 -
ZSTU-2331:Knight Moves
//BFS #include #include #define MAXN 100000 #define N 305 using namespace std; int mp[N][N]; int dir[8][2] = {{-2,1},{-1,2},{1,-2},{2,1},{2,-1},{1,2},{-1,-2},{-2,-1}};//马走的方向 typedef struct Que { int原创 2013-01-14 16:32:10 · 502 阅读 · 0 评论 -
NYOJ-58:最少步数
/*BFS*/ #include #include #include #include using namespace std; #define N 9 typedef struct { int dir,i,j,cnt; }Node; int dir[4][2] = {{-1,0},{0,1},{1,0},{0,-1}}; int si,sj,ei,ej; int mp[N][N] = {原创 2013-02-04 14:44:09 · 1198 阅读 · 0 评论