codevs2806 红与黑
有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数。
输入包含多个数据集。一个数据集开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20.
每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示:
'.'——黑砖
'#'——红砖
'@'——男子(每个数据集仅出现一次)
两个0表示输入结束。
对每个数据集,程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数。
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.#######.
.#.#.....#.
.#.#.###.#.
.#.#..@#.#.
.#.#####.#.
.#.......#.
.#########.
...........
11 6
..#..#..#..
..#..#..#..
..#..#..###
..#..#..#@.
..#..#..#..
..#..#..#..
7 7
..#.#..
..#.#..
###.###
...@...
###.###
..#.#..
..#.#..
0 0
45
59
6
13
无
根据样例可以得到,@所在的格子也算
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int m,n,s,qx,qy;
int dx[]={-,,,};
int dy[]={,,,-};
int a[][];
bool v[][];
char c;
void dfs(int x,int y)
{
s++;
v[x][y]=true;
for(int i=;i<;i++)
{
int xx=dx[i]+x,yy=dy[i]+y;
if(a[xx][yy]&&!v[xx][yy]) dfs(xx,yy);//因为将所有可以走的点标记为1,所以在不超过数组范围的前提下可以不用判断是否超出边界。因此这样做的的前提是数组要开的比最大数据至少大1
}
}
int main()
{
while(cin>>m>>n)
{
if(m==) return ;
memset(a,,sizeof(a));
memset(v,,sizeof(v));
s=;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
cin>>c;
if(c=='.') a[i][j]=;//将可以走的点标记为1
else if(c=='@') qx=i,qy=j;
}
dfs(qx,qy);
cout<<s<<endl;
}
}
开始做时2个错误:
1、没有设置判重数组,死循环了。
2、受题目先输入列数再输入行数的干扰
codevs2806 红与黑的更多相关文章
- AC日记——红与黑 codevs 2806
2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 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 ...
- C - 红与黑
C - 红与黑 Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others) Problem Descri ...
- 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 ...
随机推荐
- android Gui系统之SurfaceFlinger(4)---Vsync(1)
8.Vsync 8.1概论 VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步. “垂直同步(vsync)”指 ...
- 【转】JAVA 8 日期/时间(Date Time)API指南
前言 本来想写下Java 8的日期/时间API,发现已经有篇不错的文章了,那就直接转载吧~ PS:主要内容没变,做了部分修改. 原文链接: journaldev 翻译: ImportNew.com - ...
- [Linux 性能检测工具]TOP
TOP NAME 显示linux任务 语法 top -hv | -abcHimMsS -d delay -n iterations -p pid [, pid ...] 描述 top程序提供了系统实时 ...
- Apache Project SVN Download Sit
apache project svn download sit : http://svn.apache.org/repos/asf 如果想要研究相关项目的源码的话.或者想要成为某个项目的开发者, 就可 ...
- Sqlite学习笔记(五)&&SQLite封锁机制
概述 SQLite虽然是一个轻量的嵌入式数据库,但这并不影响它支持事务.所谓支持事务,即需要在并发环境下,保持事务的ACID特性.事务的原子性,隔离性都需要通过并发控制来保证.那么Sqlite的并发控 ...
- java 读写word java 动态写入 模板文件
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- IIS7配置PHP图解(转)
IIS7+PHP_5.2.17 于之前安装IIS的时候已经选上了isapi扩展和isapi筛选,这里就不用另外再添加角色服务了,直接开始 先修改php.ini文件.. 把c:\php下的php.ini ...
- 关于oracle数据库报12505错误的问题!
问题阐述: 导致oracle报12505错误的原因比较多,但是最可能一种原因就是客户端的监听出了问题. 解决办法: 在oracle安装目录下找到listener.ora 和 tnsnames.ora, ...
- MT7620a openwrt barrier_breaker编译后wan口dhcp无法获得地址
前言 我司准备使用openwrt barrier_breaker版本做二次开发.在烧入固件后发现wan口,dhcp无法获得地址.经如下修改后,mt7620a的路由器可以正常获得地址. 修改dts文件 ...
- HADOOP HDFS的设计
Hadoop提供的对其HDFS上的数据的处理方式,有以下几种, 1 批处理,mapreduce 2 实时处理:apache storm, spark streaming , ibm streams 3 ...