方格连续置1面积最大值
来源:互联网 发布:吉他伴奏器软件 编辑:程序博客网 时间:2024/05/29 03:33
为了进行城市规划,需要计算居民区的住宅数目,该居民区的俯视图已经规划好,并分为n*m个网格,如果某个网格具有屋顶的一部分,则向其赋值1;如果是空地,则赋值0;由值为1的相邻网格单元组成的簇认定为一个单独住宅,对角放置的值为1的网格则不被认为是同一住宅或屋顶。
函数countHomes的输入包括一个二维数组grid及其维度n和m;其中n和m分别表示二维数组grid的行和列,该函数应该返回一个表示住宅数总数的整数,网格grid只包含0和1。
http://blog.csdn.net/charles1e/article/details/52530753?locationNum=2
下面这题是稍作修改的题:
将“住宅总数”改成了最大住宅面积。
解法如下:
(当时报了RuntimeError因为判断是否越界的问题…吸取教训)
#include <iostream>#include <vector>#include <string>#include <algorithm>#include <random>using namespace std;//递归函数:访问i, j位置的四周的点int dfs(vector<vector<int>>& matrix, int i, int j){ int res = 0; if (i < 0 || i > matrix.size() - 1 || j < 0 || j > matrix[0].size() - 1) return 0; if (matrix[i][j] == 0) return 0; else { matrix[i][j] = 0; if(i - 1 >= 0 && matrix[i-1][j] == 1) { res++; res += dfs(matrix, i - 1, j); } if(i+1 < matrix.size() && matrix[i+1][j] == 1) { res++; res += dfs(matrix, i + 1, j); } if(j - 1 >= 0 && matrix[i][j - 1] == 1) { res++; res += dfs(matrix, i, j - 1); } if(j + 1 < matrix[0].size() && matrix[i][j+1] == 1) { res++; res += dfs(matrix, i, j + 1); } } return res;}//得到住宅总数int getNum(vector<vector<int>>& matrix){ int max_res = -1; for (int i = 0; i < matrix.size(); ++i) { for (int j = 0; j <matrix[0].size(); ++j) { //为1才访问 int res = 0; if (matrix[i][j] == 1) { res++; res += dfs(matrix, i, j); //递归 } if(res > max_res) max_res = res; } } return max_res;}int main(){ int m; int n; //测试用 while (cin >> m, cin >> n) { vector<vector<int>> matrix; matrix.resize(m, vector<int>(n, 0)); for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j) { matrix[i][j] = rand()%2; } } for (auto v : matrix) { for (auto i : v) cout << i << " "; cout << endl; } cout << getNum(matrix) << endl; }}
0 0
- 方格连续置1面积最大值
- 最大连续矩形面积
- 连续区间最大值
- 连续乘积最大值
- 最大的连续矩形面积
- poj2082 连续矩形最大面积
- 连续的子序列最大值
- 子数组连续和最大值
- 连续数组和的最大值
- ZOJ_3364_Black and White(巧算方格图形面积)
- poj 1654 在方格中求多边形的面积
- 最大连续矩形面积(栈实现)
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- 算法学习-连续子数组求和最大值
- 剑指offer-连续子数组的最大值
- 连续子数组的最大值C++
- 创建游戏对象
- 单片机实现多级菜单
- java内存同步
- C++学习方法
- 二分-hdu-2199
- 方格连续置1面积最大值
- linux 常用命令: find tar vi 中查找
- 关于使用sklearn进行数据预处理 —— 归一化/标准化/正则化
- C缓冲区(输入输出问题)
- intelle ide整合ssm呕心沥血的经验啊
- 隐藏域的解释,虽然我现在也不知道是啥,开始javascript,加油!
- 1112
- String 类的实现 以及 Strcpy、Strcat函数的实现
- Surf算法特征点检测与匹配