首页 > 其他分享 >图--

图--

时间:2022-10-26 21:00:56浏览次数:28  
标签:Map -- sum ++ int Link Key


题目描述

研究地球空间科学的永强想研究海岸线的长度和海岸线面积之间的关系,为此他找来了很多航拍图像。在航拍图像上利用图像分割的方法,把图像的每个像素标记成陆地(1)和水面(0)。

示例图片:

图--_#include

 

现在永强想知道每张图中陆地部分的面积。

 

已知每张图最底部的一条边都是陆地,并且在一张图上陆地都是四邻域联通的。

但是永强发现分割的结果有很多的噪声,于是他定义了如下规则试图去除噪声:

a)    如果一个水面区域被陆地包围,则将这个区域记为陆地;
b)    在a的基础上如果一个陆地区域不和底边的陆地相连,那么这是一个岛屿,不计入陆地的面积。

 

输入描述:

第一行为两个整数m和n,
接下来m行每行会有n个数,0表示水面,1表示陆地。

输出描述:

去噪后陆地部分的面积。

示例1

输入

复制

5 6
1 0 0 1 0 0
0 0 1 0 1 0
1 1 1 1 1 0
1 0 0 1 1 1
1 1 1 1 1 1

输出

复制

21
#include<vector>
#include<iostream>
using namespace std;

int m,n;

void Link(const int Key,int x,int y,const int Set,vector<vector<int>>& Map,int& sum)
{
if(Map[x][y] == Key){
sum++;
Map[x][y] = Set;
if(x - 1 >= 0 && Map[x - 1][y] == Key){
Link(Key,x - 1,y,Set,Map,sum);
}
if(x + 1 < m && Map[x + 1][y] == Key){
Link(Key,x + 1,y,Set,Map,sum);
}
if(y - 1 >= 0 && Map[x][y - 1] == Key){
Link(Key,x,y - 1,Set,Map,sum);
}
if(y + 1 < n && Map[x][y + 1] == Key){
Link(Key,x,y + 1,Set,Map,sum);
}
}
else{
return;
}
}

int main(){
int sum = 0;
cin >> m >> n;
vector<vector<int>> Map(m,vector<int>(n,0));
for(int i = 0;i < m;i ++){
for(int j = 0;j < n;j ++){
int tmp;
scanf("%d",&tmp);
Map[i][j] = tmp;
}
}
for(int i = 0;i < n;i ++){
if(Map[0][i] == 0){
Link(0,0,i,-1,Map,sum);
}
}
for(int i = 0;i < m;i ++){
if(Map[i][0] == 0){
Link(0,i,0,-1,Map,sum);
}
if(Map[i][n - 1] == 0){
Link(0,i,n - 1,-1,Map,sum);
}
}
for(int i = 0;i < m;i ++){
for(int j = 0;j < n;j ++){
if(Map[i][j] == 0){
Map[i][j] = 1;
}
}
}
sum = 0;
Link(1,m - 1,0,2,Map,sum);
printf("%d\n",sum);
return 0;
}

 

标签:Map,--,sum,++,int,Link,Key
From: https://blog.51cto.com/u_13121994/5798519

相关文章

  • [Typescript] 70. Medium - Without
    ImplementthetypeversionofLodash.without,Without<T,U>takesanArrayT,numberorarrayUandreturnsanArraywithouttheelementsofU.typeRes=With......
  • 比较数组前后元素的大小关系时,注意下标是否越界
    这道题是爬山题,注意比较A[i]<A[i+1]的时候,i+1是否越界941. ValidMountainArrayEasy12234FavoriteShareGivenanarray ​​A​​​ ofintegers,return ​​true......
  • Keras搭建CNN进行人脸识别系列(三)--利用haar级联检测器识别出人脸
    人脸识别原理        从实时视频流中识别出人脸区域,从原理上看,其依然属于机器学习的领域之一,本质上与谷歌利用深度学习识别出猫没有什么区别。程序通过大量的......
  • request模块和openpyxl模块
    1.第三方模块的下载应由第三方模块:别人写的模块一般情况下功能都特别强大我们如果想使用第三方模块第一次必须先下载后面才可以反复使用(等同于内置模块)下载......
  • 剑指offer系列题笔记(二维数组的查找)
    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数......
  • 嵌入式-C语言基础:二维数组的地址写法
    二维数组a的有关指针:表示形式                             含义                                 ......
  • 剑指offer(第二版)
    前15题目22.10.22时间2时间3时间4剑指Offer03.数组中重复的数字ac剑指Offer04.二维数组中的查找ac剑指Offer05.替换空格acxxx......
  • SQL26_ 计算25岁以上和以下的用户数量
    通过代码1234567select '25岁以下', count(ifnull(age, 24)) as numberfrom user_profile where age < 25&nbs***bsp;age is nullunion......
  • 高德二面随想
    每一天都要很努力,不然生活总会让你付出代价!批判一下自己,5月份离职到目前已经接近半年,这半年时间发生了很多事情,有好的也有坏的。好的是和对象的事情终于尘埃落定,坏的事情......
  • Java设计模式 —— 代理模式
    15代理模式15.1代理模式概述ProxyPattern:给某一个对象提供一个代理或占位符,由代理对象来控制对原对象的访问。代理对象是客户端和目标对象的之前的桥梁,它接收来......