ZOJ2165 简单DFS搜索

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdlib>
 4 #include<algorithm>
 5 #define MAXN 25
 6 using namespace std;
 7 int h,w;
 8 int ans;
 9 int dir[4][2]={-1,0,1,0,0,-1,0,1};
10 char map[MAXN][MAXN];
11
12 bool ok(int x,int y)
13 {
14     if(x<0||x>=h) return false;
15     if(y<0||y>=w) return false;
16     if(map[x][y]==‘#‘) return false;
17     return true;
18 }
19 void dfs(int a,int b){
20     map[a][b]=‘#‘;
21     ans++;
22     int i;
23     for(i=0;i<4;i++){
24        int xx=a+dir[i][0];
25        int yy=b+dir[i][1];
26        if(ok(xx,yy)){
27             dfs(xx,yy);
28        }
29     }
30
31 }
32 int main(){
33     int q,e;
34     int i,j;
35     while(cin>>w>>h){
36         for(i=0;i<h;i++){
37             for(j=0;j<w;j++){
38                 cin>>map[i][j];
39                 if(map[i][j]==‘@‘)
40                   {q=i,e=j;}
41             }
42         }
43         ans=0;
44         dfs(q,e);
45         cout<<ans<<endl;
46         for(i=0;i<h;i++){
47             for(j=0;j<w;j++){
48                 cout<<map[i][j];
49             }
50             cout<<endl;
51         }
52     }
53     return 0;
54 }

简单的DFS  刚开始把i定义成全局变量  orz  查了好久。。。这游戏太难了

ZOJ2165 简单DFS搜索,布布扣,bubuko.com

时间: 2024-11-08 15:49:20

ZOJ2165 简单DFS搜索的相关文章

poj 1321 棋盘问题 简单dfs

这么简单一道题目,想了这么久,还wa了一次,不可饶恕啊,越来越觉得自己笨了,dfs搜索都快不会写了...逻 辑混乱,一定得认真想题目,认真写代码: 代码: #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<vector> #include<set> #include<stri

hdu1372 dfs搜索之国际象棋的马

原题地址 题意 一个8x8的国际象棋棋盘,你有一个棋子"马".算出棋子"马"从某一格到另一格子的最少步数. 与普通dfs不同的是,你能走的路线不是上下左右,四个方向.而是由"日" 字组成的8个方向.虽然是国际象棋的马,但是其实和中国象棋的马走法还是一样的. 代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std;

组队赛#1 解题总结 ZOJ 3803 YY&#39;s Minions (DFS搜索+模拟)

YY's Minions Time Limit: 2 Seconds      Memory Limit: 65536 KB Despite YY's so much homework, she would like to take some time to play with her minions first. YY lines her minions up to an N*M matrix. Every minion has two statuses: awake or asleep. W

URAL 1298 knight dfs搜索

1298. Knight Time limit: 2.0 second Memory limit: 64 MB Even paratroopers have vacations. The flight to Sirius in the depths of "The Admiral Brisco" Leo Hao whiled away with chessboard. No, he did not like usual chess game, and in addition, he d

nyist oj 19 擅长排列的小明(dfs搜索+STL)

擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长.现在需要你写一个程序来验证擅长排列的小明到底对不对. 输入 第一行输入整数N(1<N<10)表示多少组测试数据, 每组测试数据第一行两个整数 n m (1<n<9,0<m<=n) 输出 在1-n中选

hdu 1016 Prime Ring Problem (简单DFS)

Prime Ring Problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25700    Accepted Submission(s): 11453 Problem Description A ring is compose of n circles as shown in diagram. Put natural numb

【转】POJ-2362-Square:简单 DFS+剪枝

思路: 首先将输入的各边长累加求和 即四边形周长sum, 后除4 即边长side,这样 通过DFS 搜索这些sticks能否组合成4根长度均为side 进而确定yes no. 在此 就涉及到搜索顺序了-最优性剪枝: 不难理解 先搜索的小棒子 越长,组合构成side的方式就越少,搜索到结果的时间就越短. SO从最长的棒子开始进行DFS. // num表示已确认组合构成 的side的数目 即所求正方形的边数 // len表示所求正方形边长度 s表示搜索起点 #include<iostream> #

Red and Black(简单dfs)

Red and Black Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12519    Accepted Submission(s): 7753 Problem Description There is a rectangular room, covered with square tiles. Each tile is color

hdu 1518 Square (dfs搜索可参考poj1011)

Square Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8589    Accepted Submission(s): 2784 Problem Description Given a set of sticks of various lengths, is it possible to join them end-to-end