openjudge城堡问题
2015-12-16 19:36
302 查看
1817:城堡问题
查看提交
统计
提问
总时间限制: 1000ms 内存限制: 65536kB
描述
1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#####---#---# 4 # # | | | | # # ############################# (图 1) # = Wall | = No wall - = No wall
图1是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成mn(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<cstdio> #include<cstring> using namespace std; int west[53][53],east[53][53],north[53][53],south[53][53]; int f[53][53],n,m,i,j,ans,k; int xx[10]={1,0,-1,0},yy[10]={0,1,0,-1}; int dfs(int x,int y) { k++; f[x][y]=1; if (north[x][y]==0&&x-1>0&&f[x-1][y]==0) dfs(x-1,y); if (south[x][y]==0&&x+1<=n&&f[x+1][y]==0) dfs(x+1,y); if (west[x][y]==0&&y-1>0&&f[x][y-1]==0) dfs(x,y-1); if (east[x][y]==0&&y+1<=m&&f[x][y+1]==0) dfs(x,y+1); } int main() { scanf("%d%d",&n,&m); for (i=1;i<=n;i++) for (j=1;j<=m;j++) { int x; scanf("%d",&x); if (x-8>=0) { south[i][j]=1; x-=8; } if (x-4>=0) { east[i][j]=1; x-=4; } if (x-2>=0) { north[i][j]=1; x-=2; } if (x-1>=0) { west[i][j]=1; x-=1; } } memset(f,0,sizeof(f)); int num=0; for (i=1;i<=n;i++) for (j=1;j<=m;j++) if (f[i][j]==0) { k=0; dfs(i,j); ans=max(ans,k); num++; } cout<<num<<endl<<ans; return 0; } //这个题最关键的一点是读清题意,初始化时细心认真即可,东南西北一定要注意,不要弄错了
相关文章推荐
- shell按行读取文件的3种方法
- shell学习之sed命令补充
- Linux下scp自动输入密码
- Linux mysql
- 深入浅出:Linux设备驱动之字符设备驱
- Linux indent命令
- 编译nginx时提示undefined reference to 'pcre_free_study' 的问题及解决
- shell脚本学习2
- Linux添加虚拟网卡的多种方法
- Centos7-Mysql 5.6 多主一从 解决方案&详细配置
- linux 下 运行easypr
- openjudge 鸣人和佐助
- 使用Font Awesome替换你的网站图标(icons 图标)
- 怎么取消环境变量设置 shell
- centos上安装ImageMagick
- Linux 一次木马病毒入侵排查( DbSecuritySpt)
- AT&T 格式Linux 汇编语法
- 对 Linux 初级、中级、高级用户非常有用的 60 个命令
- 初探nginx反向代理
- semiJoin mapreduce