问题描述
给出一个m × m的矩阵,’0’表示图形背景,’1’表示图元的一个点。我们的任务是将矩阵中连成一片的’1’(图元)标记出来。
解决方案
利用队列来实现。按顺序遍历矩阵的每一个点。如果该点为’1’,将该点入队。然后取出队列中的点,对该点四周(上下左右)的点进行扫描,将标记为’1’的点入队,同时将这些点都标记位同一个id值,然后,再次将扫描原点置为从队列中取出的新点,重复上述步骤直到队列空。然后遍历矩阵中的下一个点直到矩阵遍历完成。
算法类似于图的宽搜。代码如下:
//识别图元(矩阵中连成一片的1),将属于同一图元的点编号
#include<iostream>
using namespace std;
#define X 7