Red and Black (找到一个标记一个)
题目链接: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 (找到一个标记一个)相关推荐
- 给定数字的b+树创建_在C ++中找到给定数字中的两个的下一个和上一个幂
给定数字的b+树创建 Problem statement: 问题陈述: Find Next and previous power of two of a given number 查找给定数字中两个的 ...
- 【日记本砸】21.06.11-20 复杂的式子和角标只是一个符号一个标记而已
喜欢 就是我想把所有的安全感和喜欢都有所克制.恰如其分地传达给你, 不让你失落也不给你压力. 互联网+吹牛大赛 破事不值得浪费时间. 梦 生活费 我以为自己能结余,结果入不敷出- 买伞 是个小天才,想 ...
- 今日报错系列:没有找到 或上一个增量链接没有生成它;正在执行完全链接
今天下面两个问题耗费些时间,特此记录一下,以便后面翻阅. 今日报错记录: 报错一.没有找到 或上一个增量链接没有生成它;正在执行完全链接 报错二.执行异步任务捕获到异常:std::bad_alloc ...
- ink 没有找到 或上一个增量链接没有生成它;正在执行完全链接
今天编绎程序的时候发现会有这么个警告 "LINK : 没有找到 ... 或上一个增量链接没有生成它:正在执行完全链接" 清理,生成或者重新生成都还是会有这个问题. 到生成目录下,发 ...
- 成长是一个时辰一个时辰熬出…
原文地址:成长是一个时辰一个时辰熬出来的-From DouBan 作者:Willard 说明一下:这是豆瓣上的帖子,对于精华或是自己很有同感的地方,自己用红颜色标记了一下:紫色标注为自己的一些看法~~ ...
- Linux就这个范儿 第12章 一个网络一个世界
Linux就这个范儿 第12章 一个网络一个世界 与Linux有缘相识还得从一项开发任务说起.十八年前,我在Nucleus OS上开发无线网桥AP,需要加入STP生成树协议(SpanningTree ...
- 收藏很久的资源整合网站,一个网站一个世界
在开始今天的正式文章前先问你们几个问题: 你想要找一些网站,但是总是无法精准捕捉? 你想要某些资源,但是总是被挡在门外? 你想下载素材,但是不知道哪里有渠道可以下载? 以上这些问题有没有戳中你的心,如 ...
- 每天计划完成打勾的app 做完一个打一个勾那种便签
对于忙碌的职场人士来说,每天都有很多事情要处理.为了不把重要的事情漏掉,需要把待办的事项列下来,做完一个打勾一个,这样一看待办列表,自己做了多少事.还有多少事情没做就可以一目了然. 现在有做完一个打一 ...
- 【实验课】一群人围一圈,隔一个杀一个,剩一个,最后活谁?
实验三大步骤:一立Flag,二百度,三动手,四发朋友圈. 初始问题 东罗马帝国,里奥二世曾今让64名死刑犯站成一个圈,隔一个杀一个,杀到剩下一个为止.并让所有死刑犯自己争抢位置,如果你是死刑犯的一员, ...
最新文章
- 我最喜欢的几个苏州美食
- Maplesoft MapleSim2020中文版
- matlab考试资料,MATLAB复习资料
- 前端求职-htmlcss
- 光复用技术中三种重要技术_传感器在机器人技术研究发展历程中扮演着重要角色...
- Java扑克牌(多线程)
- 系统分析师通过率_软考5个高级难度最小的是哪个?哪个通过率高一些?
- Android开发之ANR原因分析
- IA-32系统编程指南 - 第三章 保护模式的内存管理【2】
- linux里用c实现cat_【案例】用T云做了什么能让企业在工业自动化控制系统行业里实现逆向增长?...
- C++ 使用VS2010创建MFC ActiveX工程项目
- MFC控件使用总结——CListCtrl
- MySQL-快速入门(5)数据查询-常用关键字、分组查询、聚合函数
- 微分几何笔记(8) —— 切向量,切空间
- 2021-05-01微信小程序存储数据的几种方式
- Python编程定义函数参数的小tips
- YOLOv3 ubuntu 配置及训练自己的VOC格式数据集
- 霸榜世界第一的在线教育App,靠什么增长到3亿用户?
- linux运行欧陆风云,释放强大性能:Linux内核迎来QMEU 6.0的M68k虚拟机补丁
- 来免费领养blog绿豆蛙宠物吧,和QQ宠物差不多
热门文章
- python判断_python的判断
- 网页导出pdf不完整_网站中的页面如何转成PDF文档?
- NOI数学:大步小步(Baby Step Giant Step,BSGS)算法
- python最优分箱计算iv值_GitHub - zhaoxingfeng/WOE: Weight of Evidence,基于iv值最大思想求最优分箱...
- 图片流写出 并带数据_IO流阶段---字符流
- android 屏幕管理软件,Android Screencast下载
- SSH连接Linux CentOS7-Putty篇
- eclipse远程连接hadoop_hadoop集群搭建详细方法
- 软考网络工程师笔记-综合知识3
- Qt5.7| C/C++ 超级简单一学就会的仿QQ宠物