GoodJob

You never know what you can do till you try

算法刷题(6)--寻岛算法

算法刷题(6)--寻岛算法


package p1;

/**
 * 寻岛个数算法实现
 * @author Guozhu Zhu
 * @date 2018/4/17
 * @version 1.0
 *
 */
public class Test07 {
	
	/*
	 * | 0 | 0 | 0 | 0 |
	 * | 0 | 1 | 1 | 1 |
	 * | 0 | 0 | 1 | 1 |
	 * | 1 | 0 | 0 | 0 |
	 * 输出的结果为: 2个岛
	 */
	public static void main(String[] args) {
		char[][] land = {{'0', '0', '0', '0'}, {'0', '1', '1', '1'}, {'0', '0', '1', '1'}, {'1', '0', '0', '0'}};
		System.out.println(getAns(land));
	} 
	
	public static void arroundFind(char arr[][], int i, int j) {
		if (i < 0 || j < 0 || i >= arr.length || j >= arr[i].length || arr[i][j] != '1') {
			return ;
		}
		arr[i][j] = '0';
		arroundFind(arr, i+1, j);
		arroundFind(arr, i-1, j);
		arroundFind(arr, i, j-1);
		arroundFind(arr, i, j+1);
	}
	
	/*
	 * 深度优先搜索算法
	 */
	public static int getAns(char arr[][]) {
		int ans = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr[i].length; j++) {
				if (arr[i][j] == '1') {
					arroundFind(arr, i, j);//广度优先搜索算法
					ans++;
				}
			}
		}
		return ans;
	}

}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37770023/article/details/79974026
个人分类: 算法
上一篇算法刷题(5)--二维数组查找
下一篇java基础知识学习记录(TCP, UDP)
想对作者说点什么? 我来说一句

算法刷题LeetCode

2018年01月08日 837KB 下载

程序员代码面试指南课本与源代码

2017年11月06日 59.49MB 下载

LeetCode算法设计

2017年07月26日 1.52MB 下载

自动寻峰算法(matlab源文件)

2017年08月21日 429KB 下载

面互联网开发和算法岗刷题书籍全

2018年01月09日 102.18MB 下载

智能寻线小车的控制算法

2017年07月24日 298KB 下载

算法刷题LeetCode(中文版)

2018年04月22日 806KB 下载

没有更多推荐了,返回首页

关闭
关闭