C - 红与黑

Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)

Problem Description

有一个矩形的房间,房间铺着正方形的地砖。每个地砖被涂上红色或者黑色。初始时你站在房间里的某个黑色地砖上,你每次只能移动到相邻的四个地砖之一,即上下左右移动,并且你每次只能移动到黑色的地砖上,不能走到红色地砖。
编程计算出按照上述要求你能走到的黑色地砖的个数。

Input

输入包含多组测试数据。每组测试数据第一行包括2个整数W和H;W和H是房间的宽度和长度,分别表示为房间的x和y坐标轴。W和H不大于20。接下来是H行每行W个地砖的房间,每个地砖表示如下:
‘.’——黑色地砖
‘#’——红色地砖
‘@’ ——你在房间里的初始位置(房间只出现一次)。
输入的最后一行是两个整数0,不用处理。

Output

对每个测试样例,输出一行,即你能走到的黑色地砖的个数(包括你初始站在的黑色地砖)。

Sample Input

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
0 0

Sample Output

45
59
6
13

#include<cstdio>
#include<cstring> int tox[] = {, , , -};
int toy[] = {, , -, }; char mp[][];
int w, h, cnt; bool judge(int x, int y){
// 坐标(x, y) 在图的范围内,并且为黑色地砖('.')
if(x >= && x < h && y >= && y < w && mp[x][y] == '.')
return true;
else return false;
} void dfs(int x, int y){
cnt++; //一个能走的,让cnt++
mp[x][y] = '#'; // 把走过的变为不能走的,避免重复计算
for(int i=; i<; i++){ // 枚举四连通的走法
if(judge(x + tox[i], y + toy[i])){ // 如果下一步在图内并且可走
dfs(x + tox[i], y + toy[i]);
}
}
} int main()
{
while(scanf("%d%d", &w, &h) && w && h){
for(int i=; i<h; i++){ // 输入图
scanf("%s", mp[i]);
}
cnt = ;
for(int i=; i<h; i++){
for(int j=; j<w; j++){ // 遍历寻找 @ 起点
if(mp[i][j] == '@') {
dfs(i, j);
}
}
}
printf("%d\n", cnt);
}
return ;
}

最新文章

  1. JS 深浅拷贝
  2. [代码]label增加删除线
  3. Java Map按键(Key)排序和按值(Value)排序
  4. opencv png和jpg的叠加
  5. Search history in &quot;Maps&quot;
  6. 仅IE6/7中添加checked为true的input到DOM中为false
  7. 【C#设计模式——创建型模式】简单工场模式
  8. Mysql相关操作
  9. js 打开新页面 window.open()
  10. python数据类型——字符串类型
  11. jmeter压测mysql报can not be represented as java.sql.Timestame错误解决方法
  12. Linux下编译安装redis
  13. elasticsearch简单操作(一)
  14. &lt;Differential Geometry of Curves and Surfaces&gt;(by Manfredo P. do Carmo) Notes
  15. C#中List的方法RemoveAt小测试
  16. 浅谈c#的三个高级参数ref out 和Params
  17. eclipse svn同步资源库时忽略某些不需要提交文件类型和文件夹
  18. POJ 2229 Sumsets【DP】
  19. 使用spring的aop对Struts2的Action拦截后出现依赖注入为空问题
  20. java struts2入门学习---文件下载的二种方式

热门文章

  1. css选择器有哪些
  2. #leetcode刷题之路3-无重复字符的最长子串
  3. P1330 封锁阳光大学 DFS+染色
  4. ABAP术语-Method
  5. ABAP术语-Connection Type
  6. Lintcode算法
  7. 什么是CPU平均负载
  8. pyqt 多窗口跳转
  9. php+sqlserver处理读取decimal 类型数据,不满1的数字会去掉0的问题
  10. 【Hbase一】基础