码迷,mamicode.com
首页 > 其他好文 > 详细

POJ1979 red and black

时间:2015-08-17 18:58:17      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

POJ1979 red and black

思路:从起点开始向四个方向进行深度优先搜索,搜索过的点置为#(避免重复搜索)。

对于字符地图的输入来说,在大多数情况下用cin输入较scanf更为简便。

 1 #include<iostream>
 2 using namespace std;
 3 #define MAX_W 20
 4 #define MAX_H 20
 5 char room[MAX_W][MAX_H];
 6 int W, H;
 7 //四方向数组的设置 
 8 const int direction[4][2] = { {-1, 0}, {1, 0}, {0, -1}, {0, 1},};
 9 int step = 0;
10 int dfs(const int& x, const int& y)
11 {
12     //将走过的点设置为#,不会出现重复搜索的情况
13     room[x][y] = #;
14     ++step;
15     for (int i = 0; i < 4; ++i)
16     {
17         int nx = x + direction[i][0];
18         int ny = y + direction[i][1];
19         if (nx >= 0 && nx < W && ny >= 0 && ny < H && room[nx][ny] == .)
20         {
21             dfs(nx, ny);
22         }
23     }
24     return step;
25 }
26 
27 ///////////////////////////SubMain//////////////////////////////////
28 
29 int main()
30 {
31     //输入两数据且在都不为0时一直循环的书写方法
32     while (cin >> W >> H, W > 0)
33     {
34         step = 0;
35         //这样定义变量对for循环的书写有一定简化。若初始化为0,还可省略for中的第一部分
36         int x, y;
37         //用二维数组[][]的角标方式表示 x.y ,注意输入时用嵌套for循环次序为:外y内x。
38         //此后都用x,y的次序。(循环和角标都是x,y哦)
39         for (y = 0; y < H; ++y)
40         {
41             for (x = 0; x < W; ++x)
42             {
43                 //关于数组字符的输入采用C++中的cin更为简便
44                 cin >> room[x][y];
45             }
46         }
47         //用bool作为判断标记能有效避免计算机不必要的运算,头文件为iostream
48         bool found = false;
49         for (x = 0; x < W; ++x)
50         {
51             for (y = 0; y < H; ++y)
52             {
53                 if (room[x][y] == @)
54                 {
55                     found = true;
56                     break;
57                 }
58             }
59             if (found)
60             {
61                 break;
62             }
63         }
64         cout << dfs(x, y) << endl;
65     }
66     return 0;
67 }

 

POJ1979 red and black

标签:

原文地址:http://www.cnblogs.com/xlsryj/p/4737224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!