OpenJudge - 红与黑(DFS)
题目链接:http://bailian.openjudge.cn/practice/2816?lang=en_US
总时间限制: 1000ms 内存限制: 65536kB
描述
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
输入
包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下
1)‘.’:黑色的瓷砖;
2)‘#’:白色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。
输出
对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。
样例输入
6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
0 0
样例输出
45
解题思路
题意:给定一点,计算它所在的连通区域的面积。
思路:设f(x, y)为从点(x,y)出发能够走过的黑瓷砖总数,则f(x,y)=1+f(x−1,y)+f(x+1,y)+f(x,y−1)+f(x,y+1),凡是走过的瓷砖不能够被重复走。
Accepted Code:
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 25;
char mp[MAXN][MAXN];
int n, m, dir[][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
int DFS(int x, int y) {mp[x][y] = '#';int tx, ty, ans = 1;for (int i = 0; i < 4; i++) {tx = x + dir[i][0];ty = y + dir[i][1];if (tx >= 0 && tx < m && ty >= 0 && ty < n && mp[tx][ty] != '#') {mp[tx][ty] = '#';ans += DFS(tx, ty);}}return ans;
}
int main() {int ex, ey;while (scanf("%d%d", &n, &m), n + m) {for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {scanf(" %c", &mp[i][j]);if (mp[i][j] == '@')ex = i, ey = j;}}printf("%d\n", DFS(ex, ey));}return 0;
}
OpenJudge - 红与黑(DFS)相关推荐
- 计蒜客 红与黑 dfs
蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动. 请写一个程序,计算你总共能够到达多少块黑色的瓷砖. 输入格式 第一行是两个整数 ...
- 搜索(DFS与BFS)
搜索 BFS Flood Fill模型 池塘计数 城堡问题 山峰和山谷 最短路模型 迷宫问题 武士风度的牛 抓住那头牛 多源BFS 矩阵距离 最小步数模型 魔板 双端队列广搜 电路维修 双向广搜 字串 ...
- [AcWing算法刷题]之DFS+BFS迷宫模板(简单)
题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...
- 电子学会 青少年软件编程等级考试 C语言 5 级
5级-2020-12-01-漫漫回国路 5级-2020-12-02-装箱问题 19:装箱问题 OpenJudge - 19:装箱问题 8785:装箱问题 OpenJudge - 8785:装箱问题 1 ...
- AcWing-算法提高课【合集】
算法提高 动态规划 数字三角形 1015. 摘花生 1018.最低通行费 1027. 方格取数 最长上升子序列LIS 1017. 怪盗基德的滑翔翼 1014.登山 482.合唱队形 1012. 友好城 ...
- ACWing 2021寒假每日一题题解
104.货仓选址(贪心?) 找中位数即可 /* 时间会慢慢过去. 或许有一天,土味北子哥放下了花大杀手的头衔,回到河北的家里盖着钱当个安静的河北首富. 或许有一天,博爱哥哥不再是按时更新的汤达人,偶尔 ...
- 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818
[题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...
- Bailian2816 红与黑【DFS】
2816:红与黑 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动.请写一 ...
- AcWing 1113. 红与黑【《信息学奥赛一本通》】【DFS】【BFS】【Flood Fill】
AcWing 1113. 红与黑 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 解法一(BFS): 解法二(DFS): 四.其它题解 一.题目链接 AcWing 1113. ...
- OpenJudge - 海贼王之伟大航路(状态压缩+DFS)
题目链接:http://bailian.openjudge.cn/practice/4124?lang=en_US 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为 ...
最新文章
- 在Windows中将目录添加到PATH环境变量
- FragmentTabHost切换Fragment时避免重复加载UI
- 一个高端大气上档次的壁纸网站,突破你的的审美
- 从钱龙数据中读取股票权息信息导入到数据库
- 玩转springboot2.x之搭建Thymeleaf官方示例程序
- c多线程并发处理方式_Java并发基础,不怕你看不懂
- js 去除html标签
- 孙鑫VC学习笔记:第七讲 对话框
- K歌、短视频技术最佳实践——“唱吧”音视频技术探索
- ad7705c语言程序,TM7705低成本16位高精度ADC方案 附技术手册和C语言代码
- 数据治理系列:数据血缘关系
- base64格式转为二进制流
- 【linux】运行run文件显示cannot execute binary file
- Mac下手动备份Mysql数据库
- 将sentinel.jar做成windows服务
- 大佬评清华Jittor,这是怎样一个深度学习框架?
- 【全国数据】八大植被区划矢量数据(带坐标)
- 中科大MEM工程管理硕士专业考研初试与复试经验分享
- 计算机高中教育日志,高中日记范文
- 2019 秋招前端面试总结
热门文章
- Python使用Faker库
- Android Studio第一次安装app到夜神模拟器报错
- androidStudio连接不上模拟器(夜神模拟器)
- 使用虹软SDK实现离线人脸识别(局域网)
- R语言报错:Error in data[[rowvar]] : attempt to select less than one element in get1index
- Springboot毕设项目电子银行业务办理系统38kny(java+VUE+Mybatis+Maven+Mysql)
- Parameter 1 of constructor in com.xxx.controller.Xxx required a bean of type
- rabbit 消息丢失
- linux uefi iso,支持UEFI启动的GRUB2 ISO光盘镜像的制作
- hdu_2670Girl Love Value(dp)