题目链接: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)相关推荐

  1. 计蒜客 红与黑 dfs

    蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动. 请写一个程序,计算你总共能够到达多少块黑色的瓷砖. 输入格式 第一行是两个整数 ...

  2. 搜索(DFS与BFS)

    搜索 BFS Flood Fill模型 池塘计数 城堡问题 山峰和山谷 最短路模型 迷宫问题 武士风度的牛 抓住那头牛 多源BFS 矩阵距离 最小步数模型 魔板 双端队列广搜 电路维修 双向广搜 字串 ...

  3. [AcWing算法刷题]之DFS+BFS迷宫模板(简单)

    题目来源: 题库 - AcWing 目录 DFS和BFS模板题目:迷宫类 机器人的运动范围​ 字母 迷宫 红与黑 棋盘问题 马走日 全球变暖 DFS综合类 乘积最大(提高课) 单词接龙(提高课) 取石 ...

  4. 电子学会 青少年软件编程等级考试 C语言 5 级

    5级-2020-12-01-漫漫回国路 5级-2020-12-02-装箱问题 19:装箱问题 OpenJudge - 19:装箱问题 8785:装箱问题 OpenJudge - 8785:装箱问题 1 ...

  5. AcWing-算法提高课【合集】

    算法提高 动态规划 数字三角形 1015. 摘花生 1018.最低通行费 1027. 方格取数 最长上升子序列LIS 1017. 怪盗基德的滑翔翼 1014.登山 482.合唱队形 1012. 友好城 ...

  6. ACWing 2021寒假每日一题题解

    104.货仓选址(贪心?) 找中位数即可 /* 时间会慢慢过去. 或许有一天,土味北子哥放下了花大杀手的头衔,回到河北的家里盖着钱当个安静的河北首富. 或许有一天,博爱哥哥不再是按时更新的汤达人,偶尔 ...

  7. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818

    [题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...

  8. Bailian2816 红与黑【DFS】

    2816:红与黑 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动.请写一 ...

  9. AcWing 1113. 红与黑【《信息学奥赛一本通》】【DFS】【BFS】【Flood Fill】

    AcWing 1113. 红与黑 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 解法一(BFS): 解法二(DFS): 四.其它题解 一.题目链接 AcWing 1113. ...

  10. OpenJudge - 海贼王之伟大航路(状态压缩+DFS)

    题目链接:http://bailian.openjudge.cn/practice/4124?lang=en_US 总时间限制: 1000ms 内存限制: 65536kB 描述 "我是要成为 ...

最新文章

  1. 在Windows中将目录添加到PATH环境变量
  2. FragmentTabHost切换Fragment时避免重复加载UI
  3. 一个高端大气上档次的壁纸网站,突破你的的审美
  4. 从钱龙数据中读取股票权息信息导入到数据库
  5. 玩转springboot2.x之搭建Thymeleaf官方示例程序
  6. c多线程并发处理方式_Java并发基础,不怕你看不懂
  7. js 去除html标签
  8. 孙鑫VC学习笔记:第七讲 对话框
  9. K歌、短视频技术最佳实践——“唱吧”音视频技术探索
  10. ad7705c语言程序,TM7705低成本16位高精度ADC方案 附技术手册和C语言代码
  11. 数据治理系列:数据血缘关系
  12. base64格式转为二进制流
  13. 【linux】运行run文件显示cannot execute binary file
  14. Mac下手动备份Mysql数据库
  15. 将sentinel.jar做成windows服务
  16. 大佬评清华Jittor,这是怎样一个深度学习框架?
  17. 【全国数据】八大植被区划矢量数据(带坐标)
  18. 中科大MEM工程管理硕士专业考研初试与复试经验分享
  19. 计算机高中教育日志,高中日记范文
  20. 2019 秋招前端面试总结

热门文章

  1. Python使用Faker库
  2. Android Studio第一次安装app到夜神模拟器报错
  3. androidStudio连接不上模拟器(夜神模拟器)
  4. 使用虹软SDK实现离线人脸识别(局域网)
  5. R语言报错:Error in data[[rowvar]] : attempt to select less than one element in get1index
  6. Springboot毕设项目电子银行业务办理系统38kny(java+VUE+Mybatis+Maven+Mysql)
  7. Parameter 1 of constructor in com.xxx.controller.Xxx required a bean of type
  8. rabbit 消息丢失
  9. linux uefi iso,支持UEFI启动的GRUB2 ISO光盘镜像的制作
  10. hdu_2670Girl Love Value(dp)