题目链接:http://poj.org/problem?id=1979

题目大意:

有一个长方形的房间,上面铺着正方形的瓷砖。每块瓷砖都是红色或黑色的。一个男人站在一块黑色的瓷砖上。从一个瓦片,他可以移动到四个相邻瓦片中的一个。但是他不能在红瓦上移动,他只能在黑瓦上移动。

编写一个程序,通过重复上面描述的动作来计算他可以到达的黑色方块的数量。

输入

输入由多个数据集组成。数据集以包含两个正整数W和H的行开始;W和H分别是x和y方向上的瓦片数。W和H不超过20。

'.——一块黑瓷砖

“#”——红色瓷砖

@——一个男人在黑色的平铺上(数据集中只出现一次)

思路:

找到起始位置然后进行 dfs,找到一个就标记一个,然后一直走下去

一开始自己想错了,我以为是找最多的可以走的。但是后来感觉根据题目的意思来看就是找到一条路就可以了。哭泣

AC代码:

 1 #include <cstdio>
 2 #include <string>
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <string.h>
 6 #include <math.h>
 7 #include <vector>
 8
 9 using namespace std;
10
11 const int maxn = 30;
12
13 char ss[maxn][maxn];
14 int mx[] = {0,0,1,-1};
15 int my[] = {1,-1,0,0};
16 int vis[maxn][maxn];
17 int n,m;
18 int cnt = 0;
19
20 bool check(int i,int j)
21 {
22     if (ss[i][j] == '.' && !vis[i][j])
23         return true;
24     return false;
25 }
26
27 void dfs(int row,int col)
28 {
29     for (int i=0;i<4;i++)
30     {
31         int nx = row + mx[i];
32         int ny = col + my[i];
33         if (check(nx,ny))
34         {
35             cnt++;
36             vis[nx][ny] = 1;
37             dfs(nx,ny);
38         }
39     }
40
41 }
42
43
44 int main() {
45     while (cin >> m >> n) {
46         if (m == 0 && n == 0)
47             return 0;
48         bool flag = false;
49         cnt = 0;
50         memset(vis,0, sizeof(vis));
51         memset(ss,'#', sizeof(ss));
52         for (int i = 1; i <= n; i++) {
53             for (int j = 1; j <= m; j++) {
54                 cin >> ss[i][j];
55             }
56         }
57         for (int i = 1; i <= n; i++) {
58             for (int j = 1; j <= m; j++) {
59                 if (ss[i][j] == '@') {
60                     dfs(i, j);
61                     printf("%d\n", cnt + 1);
62                     flag = true;
63                     break;
64                 }
65             }
66             if (flag)
67                 break;
68         }
69     }
70 }

转载于:https://www.cnblogs.com/-Ackerman/p/11175129.html

Red and Black (找到一个标记一个)相关推荐

  1. 给定数字的b+树创建_在C ++中找到给定数字中的两个的下一个和上一个幂

    给定数字的b+树创建 Problem statement: 问题陈述: Find Next and previous power of two of a given number 查找给定数字中两个的 ...

  2. 【日记本砸】21.06.11-20 复杂的式子和角标只是一个符号一个标记而已

    喜欢 就是我想把所有的安全感和喜欢都有所克制.恰如其分地传达给你, 不让你失落也不给你压力. 互联网+吹牛大赛 破事不值得浪费时间. 梦 生活费 我以为自己能结余,结果入不敷出- 买伞 是个小天才,想 ...

  3. 今日报错系列:没有找到 或上一个增量链接没有生成它;正在执行完全链接

    今天下面两个问题耗费些时间,特此记录一下,以便后面翻阅. 今日报错记录: 报错一.没有找到 或上一个增量链接没有生成它;正在执行完全链接 报错二.执行异步任务捕获到异常:std::bad_alloc ...

  4. ink 没有找到 或上一个增量链接没有生成它;正在执行完全链接

    今天编绎程序的时候发现会有这么个警告 "LINK : 没有找到 ... 或上一个增量链接没有生成它:正在执行完全链接" 清理,生成或者重新生成都还是会有这个问题. 到生成目录下,发 ...

  5. 成长是一个时辰一个时辰熬出…

    原文地址:成长是一个时辰一个时辰熬出来的-From DouBan 作者:Willard 说明一下:这是豆瓣上的帖子,对于精华或是自己很有同感的地方,自己用红颜色标记了一下:紫色标注为自己的一些看法~~ ...

  6. Linux就这个范儿 第12章 一个网络一个世界

    Linux就这个范儿 第12章 一个网络一个世界 与Linux有缘相识还得从一项开发任务说起.十八年前,我在Nucleus  OS上开发无线网桥AP,需要加入STP生成树协议(SpanningTree ...

  7. 收藏很久的资源整合网站,一个网站一个世界

    在开始今天的正式文章前先问你们几个问题: 你想要找一些网站,但是总是无法精准捕捉? 你想要某些资源,但是总是被挡在门外? 你想下载素材,但是不知道哪里有渠道可以下载? 以上这些问题有没有戳中你的心,如 ...

  8. 每天计划完成打勾的app 做完一个打一个勾那种便签

    对于忙碌的职场人士来说,每天都有很多事情要处理.为了不把重要的事情漏掉,需要把待办的事项列下来,做完一个打勾一个,这样一看待办列表,自己做了多少事.还有多少事情没做就可以一目了然. 现在有做完一个打一 ...

  9. 【实验课】一群人围一圈,隔一个杀一个,剩一个,最后活谁?

    实验三大步骤:一立Flag,二百度,三动手,四发朋友圈. 初始问题 东罗马帝国,里奥二世曾今让64名死刑犯站成一个圈,隔一个杀一个,杀到剩下一个为止.并让所有死刑犯自己争抢位置,如果你是死刑犯的一员, ...

最新文章

  1. 我最喜欢的几个苏州美食
  2. Maplesoft MapleSim2020中文版
  3. matlab考试资料,MATLAB复习资料
  4. 前端求职-htmlcss
  5. 光复用技术中三种重要技术_传感器在机器人技术研究发展历程中扮演着重要角色...
  6. Java扑克牌(多线程)
  7. 系统分析师通过率_软考5个高级难度最小的是哪个?哪个通过率高一些?
  8. Android开发之ANR原因分析
  9. IA-32系统编程指南 - 第三章 保护模式的内存管理【2】
  10. linux里用c实现cat_【案例】用T云做了什么能让企业在工业自动化控制系统行业里实现逆向增长?...
  11. C++ 使用VS2010创建MFC ActiveX工程项目
  12. MFC控件使用总结——CListCtrl
  13. MySQL-快速入门(5)数据查询-常用关键字、分组查询、聚合函数
  14. 微分几何笔记(8) —— 切向量,切空间
  15. 2021-05-01微信小程序存储数据的几种方式
  16. Python编程定义函数参数的小tips
  17. YOLOv3 ubuntu 配置及训练自己的VOC格式数据集
  18. 霸榜世界第一的在线教育App,靠什么增长到3亿用户?
  19. linux运行欧陆风云,释放强大性能:Linux内核迎来QMEU 6.0的M68k虚拟机补丁
  20. 来免费领养blog绿豆蛙宠物吧,和QQ宠物差不多

热门文章

  1. python判断_python的判断
  2. 网页导出pdf不完整_网站中的页面如何转成PDF文档?
  3. NOI数学:大步小步(Baby Step Giant Step,BSGS)算法
  4. python最优分箱计算iv值_GitHub - zhaoxingfeng/WOE: Weight of Evidence,基于iv值最大思想求最优分箱...
  5. 图片流写出 并带数据_IO流阶段---字符流
  6. android 屏幕管理软件,Android Screencast下载
  7. SSH连接Linux CentOS7-Putty篇
  8. eclipse远程连接hadoop_hadoop集群搭建详细方法
  9. 软考网络工程师笔记-综合知识3
  10. Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物