Red and Black——个人c++解
来源:互联网 发布:很火excuse me网络意思 编辑:程序博客网 时间:2024/06/04 23:18
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<bits/stdc++.h>using namespace std;int a,b,sum;char q[20][20];void su(int x,int y){ q[x][y]='#';//将走过的改为'#' if(x-1>=0&&q[x-1][y]=='.')//向上 { sum++; su(x-1,y); } if(x+1<b&&q[x+1][y]=='.')//向下 { sum++; su(x+1,y); } if(y-1>=0&&q[x][y-1]=='.')//向左 { sum++; su(x,y-1); } if(y+1<a&&q[x][y+1]=='.')//向右 { sum++; su(x,y+1); } //return ;利用递归后退,每走到无路可走就后退。}int main(){ int i,j,i1,j1; while(cin>>a>>b,a!=0&&b!=0) { sum=1; for(i=0;i<b;i++) { for(j=0;j<a;j++) { cin>>q[i][j]; if(q[i][j]=='@')//标记@的位置 { i1=i; j1=j; } } } su(i1,j1); cout<<sum<<endl; } return 0;}
1 0
- Red and Black——个人c++解
- C - Red and Black
- poj1979——Red and Black
- hdu——Red and Black
- POJ——1979Red and Black
- poj1979——red and black
- 【hdu1312】red and black——bfs
- Red and Black——深搜
- POJ1979——Red and Black
- bfs入门——Red and Black
- Red and Black ——DFS
- 刷题——Red and Black POJ
- 搜索—Problem_1016-Red and Black
- hdu 1312——Red and Black(DFS)
- (step4.2.2)hdu 1312(Red and Black——BFS)
- ACM-搜索之Red and Black——hdu1312
- 【HDU 1312】Red and Black —— DFS
- 杭电ACM1312——Red and Black~~广搜
- (0)银行新核心项目开工了!!!
- 设计模式——创建型模式之单例模式
- Win10/Win7小技巧:教你如何彻底关闭系统进程
- hdu 1029 Ignatius and the Princess IV
- 1060. Are They Equal (25)
- Red and Black——个人c++解
- 随笔
- Valgrind使用简介
- linux添加头文件路径
- uploadify插件实现多文件上传
- 第一个Java程序
- [python]pip常用命令(转载)
- jxl导出xls后缀的excel文件
- CF----思维排序+01背包 山东省第八届省赛K题