HDOJ 1312 Red and Black (DFS)
来源:互联网 发布:淘宝怎么投诉卖家客服 编辑:程序博客网 时间:2024/04/29 07:42
Red and Black
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 14306 Accepted Submission(s): 8867
Problem Description
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
The input consists of multiple data sets. A data set starts with a line containing two positive integers W and H; W and H are the numbers of tiles in the x- and y- directions, respectively. W and H are not more than 20.
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)
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#include#includeint map[22][22];int w, h, max = INT_MIN;int dx[] = {-1,1,0,0},dy[] = {0,0,-1,1};void dfs(int x,int y){ int i; for(i =0; i < 4; i++) { if(!map[x+dx[i]][y+dy[i]]&&x+dx[i]<=h&&y+dy[i]<=w&&x+dx[i]>0&&y+dy[i]>0) { max++; map[x+dx[i]][y+dy[i]]=1; dfs(x+dx[i],y+dy[i]); } }}int main(){ int i,j,x,y; char c; while(scanf("%d %d",&w,&h)&&(w||h)) { max=0; memset(map,0,sizeof(map)); for(i=1;i<=h;i++) { getchar(); for(j=1;j<=w;j++) { scanf("%c",&c); if(c=='.') map[i][j]=0; else if(c=='#') map[i][j]=1; else if(c=='@') { map[i][j]=1; x=i;y=j;max=1; } } } dfs(x,y); printf("%d\n",max); } return 0;}
0 0
- hdoj 1312 Red and Black (DFS)
- HDOJ 1312 Red and Black (DFS)
- hdoj--1312--Red and Black(dfs)
- HDOJ 1312 Red and Black (DFS)
- HDOJ--1312--Red and Black【DFS】
- HDOJ 1312 Red and Black 基础DFS
- HDOJ 题目1312 Red and Black(DFS)
- hdoj 1312 Red and Black【DFS】
- HDOJ 1312 Red and Black(简单dfs)
- hdoj 1312 Red and Black【dfs,回溯】
- HDOJ 1312 Red and Black【dfs】
- HDOJ 1312-Red and Black【基础DFS】
- HDOJ-1312(Red and Black)(dfs)
- HDOJ 1312 Red and Black (简单dfs)
- HDOJ 题目1312 Red and Black(dfs)
- HDOJ 1312 Red and Black (简单dfs)
- HDOJ 1312 Red and Black (深搜 DFS)
- HDOJ 1312 Red and Black(DFS,BFS)
- 纯数字varchar类型字段的排序问题
- 黑马程序员--java线程总结(一)
- 针对Android 模拟器启动慢的问题,长时间显示 Android Logo不动
- android studio module 如何生成jar包并进行混淆
- android工程被删后,无法打开android studio
- HDOJ 1312 Red and Black (DFS)
- 浅拷贝 深拷贝 copy mutableCopy
- 1024
- Session
- 偷梁换柱——揭开多态的面纱
- AngularJS权威教程 第2章 数据绑定和第一个 AngularJS Web应用
- 小白安装ubuntu之路——教程与心得
- java中12小时制转换24小时制方法
- Android内存优化之OOM