首页 > 试题广场 >

分割后处理

[编程题]分割后处理
  • 热度指数:1532 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

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

示例图片:


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


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

但是永强发现分割的结果有很多的噪声,于是他定义了如下规则试图去除噪声:
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
头像 在看数据的太平湖水怪很成熟
发表于 2025-05-17 11:28:58
#include <iostream> #include <vector> using namespace std; int m,n; vector<vector<int>>res={{0,1},{0,-1},{1,0},{-1,0}}; void f 展开全文
头像 bandiaoz
发表于 2024-12-18 17:20:16
解题思路 这是一道图像处理题,需要计算陆地面积。关键点是: 输入是一个二维矩阵,0表示水面,1表示陆地 底部边缘一定是陆地,且陆地是连通的 需要处理两种特殊情况: 被陆地包围的水域应该算作陆地 不与底部边缘相连的陆地是岛屿,不计入面积 解题步骤: 从底部边缘开始,使用DFS或BFS遍历所 展开全文
头像 牛客513834633号
发表于 2025-03-21 21:34:00
import sysfor line in sys.stdin: a = line.split()        # print(int(a[0]) + int(a[1]))     m, n = int(a[0]), int(a[1])    grid = []    for _ in 展开全文