题目描述:

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

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

样例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
样例1输出:

5

9

#include<bits/stdc++.h>
using namespace std;
int room=0,maxs=0,rooms=0;
int wall[61][61],flag[61][61];
void find(int i,int j){if(flag[i][j])return;flag[i][j]=1;rooms++;for(int k=0;k<=3;k++){if(!((wall[i][j]>>k)&1)){switch(k){case 0:find(i,j-1);break;case 1:find(i-1,j);break;case 2:find(i,j+1);break;case 3:find(i+1,j);break;}}}
}
int main(){int m,n;cin>>m>>n;for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){cin>>wall[i][j];flag[i][j]=0;}}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){if(flag[i][j]==0){room++;rooms=0;find(i,j);if(rooms>maxs)maxs=rooms;}}}cout<<room<<endl<<maxs<<endl;
}

思路:

1.数据处理方面,墙为8421码,可以采用按位与1的方式观察是否有墙;

2.输入数据后深度优先搜索整个数组,遇到没有插旗子(flag=0)的,即找到了新的房间,进行搜索;

3.搜索房间时,首先要在这个格子上插上棋子(flag=1),然后遍历观察四面墙,找到新格子后继续搜索,直到搜到的格子的周围除了墙就是旧格子为止。在搜索的过程中面积++即可。

程序设计与算法(二)算法基础8.4城堡问题相关推荐

  1. 例题代码|程序设计与算法(二) 算法基础 北大 郭炜 中国大学MOOC 笔记

    网站链接

  2. 基础夯实:基础数据结构与算法(二)

    基础夯实:基础数据结构与算法(二) 常见的10种算法 1.递归算法 例题1:计算n! 例题2:斐波那契数列 例题3:递归将整形数字转换为字符串 例题4:汉诺塔 例题5:猴子吃桃 例题6:N皇后问题 2 ...

  3. 计算机会考程序设计循环语句知识点,算法与程序设计会考复习知识点

    <算法与程序设计会考复习知识点>由会员分享,可在线阅读,更多相关<算法与程序设计会考复习知识点(19页珍藏版)>请在人人文库网上搜索. 1.信息技术会考复习(算法与程序设计)1 ...

  4. 新手如何学习算法?算法如何入门以及零基础入门算法应该学些什么?

    搬运工,看到一篇关于算法学习之路的总结,希望对你有帮助. 原文链接:zh.lucida.me/blog/on-le 我的算法学习之路 MAY 4TH, 2014 | COMMENTS  关于 严格来说 ...

  5. 数据结构和算法_零基础入门01

    数据结构和算法_零基础入门01 一.数据结构是什么? 逻辑结构.物理结构 二.算法 算法的五个基本特征 算法设计的要求 b站学习小甲鱼的数据结构与算法,自留笔记. 程序设计=数据结构+算法 一.数据结 ...

  6. asp子窗口读取父窗口数据_算法与数据结构基础 - 数组(Array)

    数组基础 数组是最基础的数据结构,特点是O(1)时间读取任意下标元素,经常应用于排序(Sort).双指针(Two Pointers).二分查找(Binary Search).动态规划(DP)等算法.顺 ...

  7. 机器学习中的算法-支持向量机(SVM)基础

    机器学习中的算法-支持向量机(SVM)基础 版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处 ...

  8. 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)

    一.基础知识   有向图   无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...

  9. 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础

    ---layout: posttitle: 2018-02-03-PY3下经典数据集iris的机器学习算法举例-零基础key: 20180203tags: 机器学习 ML IRIS python3mo ...

  10. 【基础算法Ⅰ】算法入门篇

    目录 进入算法世界 1.输入输出 1.1输入输出 1.2快读 2.位运算 2.1运算符 2.2位运算 3.枚举 3.1枚举的引入 3.2枚举的简单理解 3.3枚举简介 3.4 枚举算法实例 算法复杂度 ...

最新文章

  1. 不占用多余空间实现值的交换——异或运算
  2. hdu 1879 继续畅通工程
  3. 一次DB2数据库连接失败(SQLSTATE=08001)的解决方法
  4. 路由网址这是mvc时代系列之三:网络路由与ASP.NET MVC生命周期(上)路由网址
  5. C++实现平衡二叉树
  6. 【REST】REST和JAX-RS相关知识介绍
  7. PHP 中 9 大缓存技术总结
  8. 大数据综合能力测试_如何完成大数据测试?资深测试从功能测试角度为你分析分析...
  9. C++自动类型推导 : auto 与 decltype 用法
  10. Problem(三):工作中的记录。。。。
  11. docker-compose 学习:通过 Dockerfile 和 build 指令搭建 LNMP
  12. 二叉树最小结构(C++版本)
  13. CSS里 @import用法
  14. 桌面小工具天气连接不到服务器,为什么Windows 7的系统里的天气小工具显示没法连接到服务?...
  15. Qt实现 QQ好友列表QToolBox
  16. 1980-2018年中国及世界各国实际利率数据
  17. 零基础怎样制作自己的网页网站具体流程 - WordPress建站
  18. 【历史上的今天】5 月 23 日:Java 正式发布;晶体管的共同发明者出生
  19. 计算机学校属于什么学历,技校毕业是什么学历 技校属于什么文凭
  20. Oracle总结【视图、索引、事务、用户权限、批量操作】

热门文章

  1. px30 lan8720移植
  2. Python 简单数据/密码加密方法
  3. java hppt ClientProtocolException invalid http response
  4. 前端禁用网页复制和选中(普通网页和vue)
  5. ApiSix基础入门:协议解析-样例详解
  6. (45.3)【API接口漏洞专题】API接口原理、请求方法、类型、安全校验方法
  7. 教学管理系统——利用java和mysql来实现
  8. 什么时候会出现user_objects的invalid_夫妻之间出现这些情况,十有八九是缘分已尽了,别不在意...
  9. CentOS7下系统一键安装后报502 Bad Gateway
  10. SEO没有未来了?浅谈SEO的职业规划道路!