POJ1979 /Openjudge1818 Red and Black解题报告(深度优先搜索,图的遍历)

这篇博客详细分析了POJ1979和OpenJudge1818的红与黑问题,探讨了图的遍历与找路径的区别。作者指出,该问题使用DFS求解,重点在于只需判断可达的黑色瓷砖,而非寻找特定路径。在遍历过程中,遇到边界条件时不需要还原已标记的点,且搜索方向不唯一。博客提供了问题的中文描述和测试数据,并给出了具体代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

红与黑(图的遍历)

目录

1.题目分析
2.dfs遍历与路径的差别
3.题目中文翻译
4.测试数据
5.具体代码

题目分析:

这道题是一道类似于图的遍历的题目,用的方法就是DFS(深度优先搜索),刚开始看题的时候不小心把题目意思给误解了,以为求的是找一条路径求这条路径上能走过的黑色瓷砖的最大数,不用想,这肯定超时了。
其实这道题只需判定能走到哪些黑色瓷砖,不需要死死的找一条能走到所有黑色瓷砖的路线,而是可以选择多条路线(比如走到一个点这个点往上只有一个瓷砖,我们可以往上走一步,然后返回,再在这个点选择其余的方向),当各个路线(类似于各种方案)都结束时所有走过的黑色瓷砖就都被标记了。

图的遍历和在图上找路径的差别

遍历:

①当碰到边界条件时返回上一步并且不需要还原上一步标记过的点。
②搜索的方向不唯一。

找路径:

①碰到边界条件时需要返回上一步并且还原上一步标记过的点。
②搜索的方向唯一。

中文翻译

描述
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
输入
包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下
1)‘.’:黑色的瓷砖;
2)‘#’:白色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。
输出
对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

测试数据:

6 9
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
11 9
.#.........
.#.##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值