城堡问题-双重解法

本文详细介绍了如何解决城堡房间数量和最大房间大小的问题,提供了使用深度优先搜索(DFS)和广度优先搜索(BFS)的解题思路,以及并查集的实现方式。通过对不同搜索算法的比较,探讨了每种方法的优缺点。

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

注意

  该博客是为了帮助同学学习,并非为了协助同学刷题,请读者保持自觉,请勿做CV工具人。另外为了节省篇幅,代码中不再写明#includeusing,如果遇到我没有声明的函数或类,那么就是某一个头文件中的函数,读者搜索“std + 名字”就能查到相关信息。

感谢 HZA大佬帮忙提交测试代码

题干

  点击查看原题链接(AcWing)

题干配图

  图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成m*n(m ≤ 50,n ≤ 50)个方块,每个方块可以有0 ~ 4面墙。

输入格式

  程序从标准输入设备读入数据。第一行是两个整数,分别是南北向、东西向的方块数。在接下来的输入行里,每个方块用一个数字(0 ≤ p ≤ 50)描述。用一个数字表示方块周围的墙,1表示西墙,2表示北墙,4表示东墙,8表示南墙。每个方块用代表其周围墙的数字之和表示。城堡的内墙被计算两次,方块(1, 1)的南墙同时也是方块(2, 1)的北墙。输入的数据保证城堡至少有两个房间。

输出格式

  城堡的房间数、城堡中最大房间所包括的方块数。结果显示在标准输出设备上。

输入样例

  在这里给出一组输入。例如:

4
7
11 6 11 6 3 10 6
7 9 6 13 5 15 5
1 10 12 7 13 7 5
13 11 10 8 10 12 13

输出样例

  在这里给出相应的输出。例如:

9
5

解题过程

深度优先搜索

  这道题大眼一看就是使用深度优先搜索(DFS)进行搜索,直接给出代码:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空梦丿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值