只是一个大概思路,基于DFS深度优先搜索和遍历(未测试)
#include<iostream>
using namespace std;
Bool A( int n,int m,int label)
{
If(1!=M[n][m]|| n>N||m>M||n<0||m<0)
{
Return false;
}
Else
{
A(n+1,m,label);
A(n,m+1,label);
A(n-1,m,label);
A(n,m-1,label);
//4l连通
A(n-1,m-1,label);
A(n+1,m+1,label);
A(n+1,m-1,label);
A(n-1,m+1,label);
//8连通
}
}
int main()
{
int N, M;
int s[][];
cout<<"数组行数"<<endl;
cin>>N;
cout<<"数组列数"<<endl;
cin>>M;
For(int i=0;i<N;i++)
{
For(int j=0;j<M;j++)
{
cin>>s[i][j];
}
}
Int label=2, num=0;
For(int i=0;i<N;i++)
{
For(int j=0;j<M;j++)
{
If(A(i,j,label))
{
Label++;
}
}
}
num=label-2;
Cout<<num<<endl;
reurn 0;
}