codevs 2806 红与黑

2806 红与黑

题目描述 Description

有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数。

输入描述 Input Description

输入包含多个数据集。一个数据集开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20.
每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示:
'.'——黑砖
'#'——红砖
'@'——男子(每个数据集仅出现一次)
两个0表示输入结束。

输出描述 Output Description

对每个数据集,程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数。

样例输入 Sample Input

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

样例输出 Sample Output

45
59
6
13

思路:

一道简单的搜索题,类似走迷宫,但更简单,

首先找到起点(男子站的位置),然后直接搜。

#include<cstdio>
#include<cstring>
using namespace std;
bool a[22][22];
char b[22][22],c[22];
int w,h,s;
void dfs(int x,int y)
{if(x<1||x>h||y<1||y>w||b[x][y]=='#')//判断是否越界以及是否是墙return ;else{if(a[x][y])//判断是否走过return ;if(b[x][y]=='.'){a[x][y]=1;s+=1;}dfs(x,y+1);//向上dfs(x,y-1);//向下dfs(x-1,y);//向左dfs(x+1,y);//向右}
}
int main()
{int i,j,x,y;while(scanf("%d%d",&w,&h)){s=1;//起点处的砖也是红色memset(a,0,sizeof(a));if(w==0&&h==0)return 0;for(i=1;i<=h;i++){scanf("%s",&c);//直接输入的话会输不全for(j=1;j<=w;j++){b[i][j]=c[j-1];if(b[i][j]=='@')//找起点{x=i;y=j;}}}dfs(x,y);//开始找printf("%d\n",s);}
}

posted @ 2016-06-10 17:35 惑&葬 阅读(...) 评论(...) 编辑 收藏

codevs 2806 红与黑相关推荐

  1. [ CodeVS冲杯之路 ] P1116

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1116/ 数据很小,DFS可A,每层枚举颜色,判断相邻的点是否有重复的颜色,记得回溯时把颜色染回0,即无颜色 这里我使用 ...

  2. 【贪心】【codevs】1214 线段覆盖

    http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...

  3. [codevs 1913] 数字梯形问题

    [codevs 1913] 数字梯形问题 题解: 本题就是加强版的 [codevs 1033] 蚯蚓的游戏问题. 分别针对三个规则建图.运行最小费用最大流. 规则1:从梯形的顶至底的m条路径互不相交. ...

  4. codevs 1002 搭桥

    codevs 第一道题 先贴描述 1002 搭桥  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Description 有一矩 ...

  5. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  6. codevs 1531 山峰

    codevs 1531 山峰 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi ...

  7. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  8. codevs 1376 帕秋莉•诺蕾姬

    codevs 1376 帕秋莉•诺蕾姬 题目描述 Description 在幻想乡,帕秋莉•诺蕾姬是以宅在图书馆闻名的魔法使.这一天帕秋莉又在考虑如何加 强魔法咒语的威力.帕秋莉的魔法咒语是一个仅有大 ...

  9. [ CodeVS冲杯之路 ] P1044

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1044/ 机房连续断网,搞得现在才能上博客-- 很经典的DP题,把问题转换一下就是分别求最不降序列和最长上升序列 f[i ...

最新文章

  1. JVM调优:打印所有-XX非标参数命令
  2. parzen窗估计如何进行结果分析_实现一下模式识别(一)Parzen窗估计
  3. PHP跳转方法:Header() + location.href
  4. pywin32 获取窗口句柄_Excel VBA | 这个窗口居然关不掉
  5. 2019 fall CS224w:01-intro
  6. centos安装后连不上网
  7. pytdx 获取板块指数_怎么查看各行业板块指数?
  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-9.使用JWT生成用户Token回写客户端...
  9. python写病毒代码_十行 Python 代码写一个USB病毒
  10. 唯一标识 微信小程序_微信小程序中用户唯一ID的获取
  11. HTTP 401和403区别
  12. Apache ab 测试使用指南
  13. 【TF2】Eager Execution机制
  14. 微服务流量卫兵 Sentinel
  15. TTW WYSIWYG Editors
  16. CBOW与Skip-Gram
  17. Android Content开头的Uri和文件绝对路径互相转换
  18. 俄勒冈大学计算机科学专业,俄勒冈大学计算机与信息科学详解 热门专业不容错过...
  19. 远程命令执行漏洞与远程代码执行漏洞33333
  20. liunx下如何使用unzip 如何压缩文件

热门文章

  1. 使用PDF24 将mathmatica 的.nb文件转化为PDF文档
  2. android 手机超频降频秘籍
  3. SAP SD发货流程中托盘的管理
  4. HTML之变色(蓝、绿、红)
  5. wordpress文章编辑器,wp文章图片排版关键词水印插件
  6. 《倾城·魅影——CG奇幻插画及技法赏析》—神咒
  7. Docker-compose编排MySQL+Nacos+Seata
  8. 在若依项目中添加导入excel功能
  9. Openstack配置hyperv作为虚拟化服务器
  10. 《小米商城》--购物车单条数据删除、购物车数量修改、清空购物车、查看地址功能、添加地址