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 ...
随机推荐
- js/jquery 禁用点击事件
前言 工作中经常遇到这种情况:验证邮箱页面的重新发送需要在3分钟后才可以点击触发请求,所以在这之前需要禁用他的点击. 网上查了后有以下几种实现方法 1.css禁用鼠标点击事件 .disabled { ...
- 配置django控制台输出ORM转化的sql
在setting中配置 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ ' ...
- python运算符及优先级顺序
python语言是一门脚本语言,支持面向对象.面向过程编程,兼具编译性和解释性的动态语言,整理出学习过程中一些基本Python运算符和运算符的优先级顺序. 一.算术运算符 运算符 描述 + 加 - 两 ...
- 编译安装开源免费中文分词scws
一.SCWS了解一下: SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的 ...
- DevOps - 版本控制 - Bitbucket
Bitbucket 使用139邮箱无法收到注册邮件 https://bitbucket.org
- webpack4提升180%编译速度
前言 对于现在的前端项目而言,编译发布几乎是必需操作,有的编译只需要几秒钟,快如闪电,有的却需要10分钟,甚至更多,慢如蜗牛.特别是线上热修复时,分秒必争,响应速度直接影响了用户体验,用户不会有耐心等 ...
- java中方法的参数传递机制_一个对象被当作参数传递到一个方法后
一个例子: 在Boy.java类中 在Girl.java类中 在marry方法中的this指的是这个方法所属的对象的引用,在这里指的是girl这个对象 在BoyGirlTest.java测试 ...
- 码云配置webhooks自动触发拉取代码
webhooks的使用 码云和github的钩子叫webhooks 每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 码云项目管理页面的webhooks设置: http ...
- 001---C/S架构
C/S 架构介绍 什么是C/S架构 C:client,客户端 S:server,服务端 实现客户端和服务端之间的网络通信 什么是网络 人与人之间交流是通过语言,才能彼此理解对方的意思.但是地球上有多个 ...
- 10+ Best Responsive HTML5 AngularJS Templates
http://www.responsivemiracle.com/collective/best-responsive-html5-angularjs-templates/