Red and Black ——DFS
来源:互联网 发布:mac os 官方镜像 编辑:程序博客网 时间:2024/06/09 16:48
【郑轻oj】1312
There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A man is standing on a black tile. From a tile, he can move to one of four adjacent tiles. But he can't move on red tiles, he can move only on black tiles.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Write a program to count the number of black tiles which he can reach by repeating the moves described above.
Input
There are H more lines in the data set, each of which includes W characters. Each character represents the color of a tile as follows.
'.' - a black tile
'#' - a red tile
'@' - a man on a black tile(appears exactly once in a data set)
Output
For each data set, your program should output a line which contains the number of tiles he can reach from the initial tile (including itself).
Sample Input
6 9....#......#..............................#@...#.#..#.11 9.#..........#.#######..#.#.....#..#.#.###.#..#.#..@#.#..#.#####.#..#.......#..#########............11 6..#..#..#....#..#..#....#..#..###..#..#..#@...#..#..#....#..#..#..7 7..#.#....#.#..###.###...@...###.###..#.#....#.#..0 0
Sample Output
4559613
#include<cstdio>#include<algorithm>#include<stack>#include<queue>using namespace std;int w,l;char map[21][21];int ans;int fx[4]={0,0,-1,1};int fy[4]={1,-1,0,0};int x,y;void dfs(int x,int y){if(x<0||x>=l||y<0||y>=w)/*判断条件:当超过界限的时候回溯或者碰到'#'的时候回溯*/ return;if(map[x][y]=='#')return;ans++;map[x][y]='#';/*标记已经遍历过的,防止再次遍历*/ for(int i=0;i<4;i++)/*总共上下左右4个方向 所以i<4*/ dfs(x+fx[i],y+fy[i]);}int main(){scanf("%d%d",&w,&l);while(w&&l){for(int h=0;h<l;h++){scanf("%s",&map[h]);for(int j=0;j<w;j++){if(map[h][j]=='@')/*寻找初始位置*/ {x=h; // 0 1 2 3y=j; // 0 * * * *} // 1 - * - *} // 2 * + * - } // 3 - - - * ans=0;dfs(x,y);printf("%d\n",ans);scanf("%d%d",&w,&l);} return 0;}
阅读全文
0 0
- Red and Black ——DFS
- Red and Black(DFS)
- Red and Black(DFS)
- Red and Black(DFS)
- dfs Red and Black
- 【DFS】RED AND BLACK
- Red and Black(DFS)
- hdu 1312——Red and Black(DFS)
- 【HDU 1312】Red and Black —— DFS
- HIT-Red and Black DFS
- poj1979 Red and Black dfs
- HDU1312:Red and Black(DFS)
- hdu1312(DFS Red and Black )
- HDU1312:Red and Black(DFS)
- 【搜索-DFS】Red and Black
- Red and Black(DFS)
- poj1979 Red and Black(dfs)
- HDU1312 Red and Black DFS
- 树链剖分模板题-SPOJ QTREEQuery on a tree
- Java中的八种基本数据类型所占字节的求法
- 解决angularjs图片加载失败
- Java中接口(interface)与抽象类(abstract class)的区别
- JavaScript浮点数及运算精度问题
- Red and Black ——DFS
- 完全背包(基础)
- 暑假写题不知道第多少天
- Android中Callable、Future、FutureTask的概念以及几种线程池的使用
- 欢迎使用CSDN-markdown编辑器
- 排序算法(七):JAVA实现堆排序
- 4567: [Scoi2016]背单词
- android之多层module依赖改成依赖aar
- struts2-创建Action的三种方法,通配符