算法设计之寻找陆地个数

@TOC 航拍地图

问题描述

Jacky在网上发布了通过无人机航拍的某海域的地图,该海域有很多岛屿,为了能更好地分析该区域的航拍地图,地图被数字化为0到9组成矩阵,0表示该位置为大海,数字1到9代表该位置为陆地,沿非0数字上下左右还是非0数字则为同一陆地,求给定的数字化航拍地图中陆地的个数。
【输入格式】
第1行为两整数m,n(m行,n列)
第2行开始是一个m*n的矩阵
【输出格式】
只有1行,为矩阵中的陆地的个数。
【输入样例】
4 11
04523000815
90345605000
60456006711
00000000894
【输出样例】
4

算法分析

根据题目分析,要求在一个矩阵中找数据块(即题目中的陆地),而且陆地上下左右还是陆地则为同一陆地,通过设计算法求出陆地的个数。
本题可以用树的深度优先搜索,进行深度优先搜索找到第一个数字所有相关的子结点,直到搜索完为一个数字块,然后寻找下一个树的根节点进行搜索。最后得到的数字块个数就是题中所说的陆地个数。而且要注意不能重复搜索,即在遍历矩阵的时候如果该数据没有被搜索过,PRC[i][j]不为0;若被搜索过,将其置0防止重复搜索。函数功能模块设计如图1-1所示。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值