统计住宅_百度笔试
来源:互联网 发布:js判断页面加载完毕 编辑:程序博客网 时间:2024/06/11 15:47
题目:
有一片区域统计住宅数量,用nxm的矩阵表示,其中0表示空地,1表示住宅。有一条原则,如果1和1是上下或左右相邻,那么就看做是一套住宅,对角相邻不算。
比如:
1 0 0 0
0 1 0 0
0 1 1 0
0 0 0 0 结果为2。
思路:用区域生长的方式来做,类似于病毒的感染,感染的规则就是相邻的元素。每个元素遍历后,如果是1那么就住宅数量+1,并将其置为-1(表示统计过了),右边和下面的元素和这个-1相乘,被“感染”为-1。如果是0则什么都不做。如果是-1就么就接着“感染”它的右和下的为1的元素,-1不统计如住宅。
//得到nxm的格点中总共的房子数量int Gethouse(int **grid, int n, int m){if (n <= 0 || m <= 0)return 0;int i, j;int count = 0;//房子的数量for (i = 0; i < n; i++){for (j = 0; j < m; j++){if (grid[i][j] == 1){count++;grid[i][j] = -1;//表示已查看过if (i < n - 1){grid[i + 1][j] = -grid[i + 1][j];}if (j < m - 1){grid[i][j + 1] = - grid[i][j + 1];}}else if (grid[i][j] == -1){if (i < n - 1){if (grid[i + 1][j] == 1)grid[i + 1][j] = -1;}if (j < m - 1){if (grid[i][j + 1] == 1)grid[i][j + 1] = -1;}}}}return count;}int main(){int **arr = new int *[4];for (int i = 0; i < 4; i++)arr[i] = new int[4];while (1){for (int i = 0; i < 4; i++)for (int j = 0; j < 4; j++)cin >> arr[i][j];int cnthouse = Gethouse(arr, 4, 4);cout << cnthouse << endl;}return 0;}
0 0
- 统计住宅_百度笔试
- 数据统计_百度统计
- 百度_笔试&面试题
- 在线笔试-城市划分-求住宅个数
- 黑马程序员_JAVA题目_百度笔试题
- 百度笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 百度笔试
- 百度统计
- 百度统计
- 百度统计
- 百度统计
- 百度统计
- 百度_2015_校招_笔试题_题来了
- 百度_2016_校招_笔试题_题来了
- Myeclipse创建Maven Web项目
- ajax方式和springMVC数据交互
- 第一范式、第二范式、第三范式
- 关于个人CSDN博客的格式的规范
- (dubbo学习)MyEclipse中构建源码
- 统计住宅_百度笔试
- Mini2440通过NFS加载内核与根文件系统
- 闲的无聊[javascript]
- 反向ssh
- wk2 50. Pow(x, n)
- Water+
- IOS开发中的弹框综述
- 两个升序单向链表的合并
- c语言基础