首页 > 试题广场 >

求连通域

[编程题]求连通域
  • 热度指数:555 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的像素点组成的图像区域。每个像素点有8个邻接点,包括了上下左右和对角线的像素点。如果点a与b邻接,称之为a与b连通。如果域A与B连通,B与C连通,则A与C也连通。
试找出一个二值矩阵的所有连通域(8邻接),并给出每个连通域的面积(邻接点的个数)和重心。

输入描述:
每组输入包括 M+1 行,第一行输入2个整数 M (1<M<100), N (1<N<100),其中M是矩阵的行数,N是矩阵的列数。

第2至M+1行,每行 N 个整数,表示在矩阵N列的像素值(已二值化为 0 和 1, 连通域为 1 表示的区域)。


输出描述:
输出 K+1 行,第一行输出连通域个数K,第2至 K+1 行,每行输出3个数,依次表示为连通域的面积值和重心的坐标值(保留2位小数点),按照连通域起始点顺序输出。
示例1

输入

4 4
0 1 0 0
0 0 0 1
0 0 0 1
1 0 0 0

输出

3
1 1.00 0.00
2 3.00 1.50
1 0.00 3.00

这道题你会答吗?花几分钟告诉大家答案吧!