C - 红与黑
C - 红与黑
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 0Sample 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 ;
}
C - 红与黑的更多相关文章
- AC日记——红与黑 codevs 2806
2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 有一个矩形房间,覆盖正方形瓷 ...
- codevs2806 红与黑
难度等级:白银 codevs2806 红与黑 题目描述 Description 有一个矩形房间,覆盖正方形瓷砖.每块瓷砖涂成了红色或黑色.一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一, ...
- 广度优先搜索 codevs 2806 红与黑
codevs 2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 有一个矩形房间,覆盖正方形瓷砖.每块瓷砖 ...
- POJ 1979 Red and Black (红与黑)
POJ 1979 Red and Black (红与黑) Time Limit: 1000MS Memory Limit: 30000K Description 题目描述 There is a ...
- codevs 2806 红与黑
2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 有一个矩形房间,覆盖正方形瓷 ...
- COJN 0487 800301红与黑
800301红与黑 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- 2806 红与黑 个人博客:doubleq.win
个人博客:doubleq.win 2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Descripti ...
- Problem J: 搜索基础之红与黑
Problem J: 搜索基础之红与黑 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 170 Solved: 100[Submit][Status][ ...
- HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) 解题报告
题目链接:pid=1312" target="_blank">HDU1312 / POJ1979 / ZOJ2165 Red and Black(红与黑) Red ...
随机推荐
- Angularjs基础(四)
AngularJS过滤器 过滤器可以使用一个管道符(|)添加到表达式和指令中. AngularJS过滤器可用于转换数据: currency 格式化数字为货币格式 filter 从数组中选着应子集. l ...
- P3818 小A和uim之大逃离 II(bfs,有条件的广搜)
题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然一阵南风吹来,一片乌云从南部天边急涌过来 ...
- substr在oracle和mysql中的应用和区别
Oracle: 书写格式: (1)Select substr(字段名(string) , 起始位置(int) , 截取长度(int)) 示例: selectsubstr('123456',0,3)a ...
- CentOS 7 以上防火墙简单配置
CentOS 7 版本以上默认的防火墙不是iptables,而是firewalle. 因此CentOS 7 以下的 iptables 的配置不能使用. 查看防火墙状态: systemctl statu ...
- android SearchView和ListView简单使用
其实我写代码最担心遇到关于适配器的使用,在我的感觉中适配器是个难度很大的知识点,但是不能因为难而不去学习啊,毕竟现在时间很充裕,可以慢慢学,所以,不会也要写,真所谓,迎难而上啊. 下面是Search ...
- 监听浏览器返回,pushState,popstate 事件,window.history对象
在WebApp或浏览器中,会有点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面.确认离开页面或执行一些其它操作的需求.可以使用 popstate 事件进行监听返回.后退.上一页操作. 一 ...
- QQ群技术:0成本创建2000人QQ群技巧
群人数,直接关系群权重;于排名,意义非凡;此法靠谱,笔者亲测. 就说这张图,这类关键词,要是没2000人群,不管你多流弊,你是做不上去滴. 于QQ群霸屏,笔者有太多的笔墨,各种排名技巧,阿力推推早前明 ...
- pads怎么高亮网络
pads怎么高亮网络 选择完整个网络----再按CTRL+H 就高亮了. 取消高亮是,选择需要取消高亮的整个网络,按 CTRL+U 就取消了. PADS在生成Gerber时过孔盖油设置方法 PADS2 ...
- 利用nodejs实现商品管理系统(二)
下面实现商品管理系统 第一步:对应的ejs与数据交换的编写格式. 商品列表界面product.ejs <% for(var i=0;i<list.length;i++){%> < ...
- python,函数式编程
函数式编程: 特点:允许传递的参数是函数,且允许返回一个函数. 由于Python允许使用变量,因此,Python不是纯函数式编程语言,同样的输入可能输出不同,有副作用.纯函数式编程语言没有变量,输入和 ...