2016.9.14百度笔试题
来源:互联网 发布:特马技巧算法 编辑:程序博客网 时间:2024/05/21 17:50
题目大意是给出一个二维数组, 描述一块地内房屋的分布, 1表示有房屋, 0表示没有, 前后上下相邻的1表示同一座房屋, 对角线不算。
思路:从【0】】【0】位开始遍历数组, 遇见第一个1时, 执行minOfHouse函数, 将与这个1前后左右相邻的1递归全部改为0。
代码如下:
import java.util.Scanner;public class Main {public static void main(String[] args) {int arr[][] = {{1, 1, 0, 1, 1}, {0, 1, 1, 0, 1}, {0, 1, 0, 1, 1}, {0, 1, 1, 1, 1}};int value = 0;for(int i = 0; i < arr.length; i++) {for(int j = 0; j < arr[0].length; j++) {if(arr[i][j] == 1) {numOfHouse(arr, i, j);value++;}}}System.out.println(value);for(int i = 0; i < arr.length; i++) {for(int j = 0; j < arr[0].length; j++) {System.out.print(arr[i][j] + " ");}System.out.println(); } }public static void numOfHouse(int arr[][], int i, int j) {while(j-1 >= 0 && arr[i][j-1] == 1) {j--;}while(i < arr.length && j < arr[0].length && arr[i][j] == 1) {arr[i][j] = 0;while(i+1 < arr.length && arr[i+1][j] == 1) {numOfHouse(arr, i+1, j);}while(i-1 >= 0 && arr[i-1][j] == 1) {numOfHouse(arr, i-1, j);}j++;}//return 0;}}
1 0
- 2016.9.14百度笔试题
- 百度笔试题14
- 百度网上笔试题
- 百度网上笔试题
- 百度网上笔试题
- 百度笔试题
- 百度网上笔试题
- 百度笔试题
- 2006百度笔试题
- 百度网上笔试题
- 百度笔试题
- 2007百度笔试题
- 百度笔试题 [软件工程师]
- 百度笔试题
- 2007百度笔试题
- 百度部分笔试题
- 08百度笔试题
- 08百度笔试题
- BFS广度优先搜索(6)--poj3414(基础题)
- JavaScript:ip与Integer转换
- 深度学习第四天: 基础Theano图像处理知识.md
- java中static{}语句块详解
- 编程_嵌入式软件需要技能和书籍
- 2016.9.14百度笔试题
- Cocos2d 进度条ProgressTimer
- SQL学习之案例
- 同时装了Python3和Python2,怎么用pip?
- 《Linux网络接口》---------struct ifreq struct ifconf
- 深度学习第五天: 看知网论文.md
- 深度学习第六天: BatchNormalization.md
- 如何将强大的SVG滤镜用在HTML元素中
- 八皇后问题求解——之递归