描述

    1   2   3   4   5   6   7  #############################1 #   |   #   |   #   |   |   ######---#####---#---#####---#2 #   #   |   #   #   #   #   ##---#####---#####---#####---#3 #   |   |   #   #   #   #   ##---#########---#####---#---#4 #   #   |   |   |   |   #   ##############################(图 1)
# = Wall
|  = No wall
- = No wall

图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

样例输出
5
9

代码如下:

#include <iostream>
#include <algorithm>
using namespace std;
int r,c;
int room[60][60];
int visited[60][60];
int maxR=0,rnum=0;
int rsize;
void dfs(int i,int k)
{if(visited[i][k]) return ;++rsize;visited[i][k]=rnum;if((room[i][k]&1)==0) dfs(i,k-1);//向西走 if((room[i][k]&2)==0) dfs(i-1,k);//向北走 if((room[i][k]&4)==0) dfs(i,k+1);//向东走 if((room[i][k]&8)==0) dfs(i+1,k);//向南走
}int main()
{cin>>r>>c;for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){cin>>room[i][j];visited[i][j]=0;}for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){if(!visited[i][j]){++rnum;rsize=0;dfs(i,j);maxR=max(maxR,rsize);}}}cout<<rnum<<endl<<maxR<<endl;return 0;
}

POJ 2815:城堡问题相关推荐

  1. 百练2815 城堡问题

    题目要求 总时间限制:1000ms 内存限制:65536kB 题目描述 Wall | = No wall – = No wall 图1是一个城堡的地形图. 请你编写一个程序,计算城堡一共有多少房间,最 ...

  2. 百练2815:城堡问题(DFS)

    描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # ...

  3. poj 1164城堡问题(DFS)

    #include <iostream> #include <cstring> using namespace std;int R,C; //行列数 int rooms[60][ ...

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

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

  5. Bailian2815 城堡问题【DFS】

    2815:城堡问题 总时间限制: 1000ms 内存限制: 65536kB 描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | ...

  6. 杭电 1272 poj 1308 小希的迷宫

    这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...

  7. 【转载】图论 500题——主要为hdu/poj/zoj

    转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  8. wall poj 1113

    题目链接:http://poj.org/problem?id=1113 题意:一个国王要在自己的城堡周围建一堵围墙,要求围墙距城堡最短距离为L.问建这样一堵围墙的最短长度是多少. 题解思路:显然围墙建 ...

  9. P1457 城堡 The Castle(DFS+染色)

    题目描述 我们憨厚的USACO主人公农夫约翰(Farmer John)以无法想象的运气,在他生日那天收到了一份特别的礼物:一张"幸运爱尔兰"(一种彩票).结果这张彩票让他获得了这次 ...

最新文章

  1. 四十六、获得SD卡的大小以及内部的文件信息
  2. WinHEC 2008 走马观花 [多图杀猫]
  3. (译)用多重赋值和元组解包提高python代码的可读性
  4. JavaScript中错误正确处理方式,你用对了吗?
  5. 数组及字符串相关知识
  6. React as a UI Runtime(五、列表)
  7. 世界主要国家的网络管理体制
  8. 【转载】关于.NET下开源及商业图像处理(PSD)组件
  9. 数据结构--二叉搜索树
  10. Maven - 安装 配置
  11. 微信-连接一切的力量
  12. linux下pcie串口卡驱动安装,pci串口卡万能驱动
  13. 论文阅读 [TPAMI-2022] VolterraNet: A Higher Order Convolutional Network With Group Equivariance for Homo
  14. 如何快速实现抖音分享与第三方登录?
  15. 关于U盘中毒,文件全变成快捷方式
  16. 如何打出j间隔符号‘·’
  17. 良心推荐:看完这20部BBC神级纪录片,英语水平提升几个Level!
  18. 游戏服务器的压力测试应该如何进行
  19. 如何使用Confide发送自毁iMessage
  20. mysql查询某学期开设的课程_查询KCXX表中2、3、4学期开设的课程情况

热门文章

  1. php imagemagick pango,imagemagick pango安装
  2. 市值实现首度超越,Salesforce完胜甲骨文?
  3. 监理工程师报名有年龄的要求吗?要注意什么?
  4. 监理工程师准考证打印常见问题汇总!
  5. ntp如何确认与服务器偏差_NTP时间同步服务器(NTP服务器)原理详解
  6. chrome安装json解析插件
  7. 【海洋女神原创】一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)...
  8. 考研院校计算机排名,2018考研:计算机专业全球院校排名公布,上海交通大学竟排第一?...
  9. keil #pragma anon_unions
  10. Vulkan Tutorial 6 统一缓冲区