找出最大的房子
来源:互联网 发布:mac定制双用粉底液c2 编辑:程序博客网 时间:2024/04/28 17:53
//找出最大的房子#include<iostream>#include<stack>#include<cstring>using namespace std;int R,C;//行列数int rooms[60][60];//rooms[i][j]表示[i][j]地方对应的房屋数值 int color[60][60];//方块是否染过颜色标记int maxRoomArea=0,roomNum=0;//最大房间面积,当前已经找的房间的数目 int roomArea; //正在探索的房间的面积void Dfs(int i,int j){ if(color[i][j])return; ++roomArea;//此方块没有被染色,房间容量增加 color[i][j]=roomNum;//将颜色标记为已经找到的房间的数目 //从这个位置[i][j]向四个方向探索 //&,见0变0,见1不变 //在本题中&1后变为0则表示没有墙,可以走 if((rooms[i][j]&1)==0)Dfs(i,j-1); //向西走 if((rooms[i][j]&2)==0)Dfs(i-1,j); //向北走 if((rooms[i][j]&4)==0)Dfs(i,j+1); //向东走 if((rooms[i][j]&8)==0)Dfs(i+1,j); //向南走 }int main(){ cin>>R>>C; for(int i=1;i<=R;i++){ for(int j=1;j<=C;j++){ cin>>rooms[i][j]; } } //输入房间情况 memset(color,0,sizeof(color));//将color全部初始为0//memset只可以设置-1和0//不如fill方便 //查看[i][k]方块是否被染色 for(int i=1;i<=R;i++){ for(int j=1;j<=C;j++){ if(!color[i][j]){//一旦发现新的没有被染色的 ++roomNum;//房间数增加 roomArea=0; Dfs(i,j);//搜索之并染色 maxRoomArea=max(roomArea,maxRoomArea); } }//每次遍历都会使一个房间的所有空间被填色 } cout<<roomNum<<endl; cout<<maxRoomArea<<endl; return 0; }
阅读全文
0 0
- 找出最大的房子
- 找出最大的对象
- 2. 找出最大的整数
- 7.4找出最大的数
- 找出面积最大的土地
- 找出最大的前K个数
- 找出含有某个字符的最大id
- 找出两个字符的最大子串
- 找出一组整数中最大的那个
- 找出一个合数的最大质数因子
- Topk找出最大的K个数
- 找出最大的5个值。
- 找出数据库中size最大的表
- 找出最大的数并统计个数
- poj2079(一堆点找出最大的三角形)
- 找出出列表的最大最小值
- 找出连续子数组的最大和
- 找出连加值最大的子数组
- [JPA] findBy 查询方法
- DFS
- 智能指针
- 怎样在jsp页面显示消息提示框
- 博客的javaweb项目
- 找出最大的房子
- 文件操作open与fopen和read与fread的区别
- 设计模式之访问者模式Visitor
- c# 学生信息登记
- SOE接口调用
- MFC Socket UDP
- Markdown 工具补全
- mongodb笔记
- shell调试