这是一个深度搜索算法的题目.有用的话请采纳=.=
#include<iostream>
using namespace std;
#define M 2000
int graph[M][M] = {1,0};
int result[M][M];
int visited[M][M];
int nx, ny,n=1,m=2;
int dx[4] = { 1,-1,0,0 },
dy[4] = { 0,0,1,-1 };
int max=0;
int search(int x,int y,int k) { //深度优先搜索算法
visited[x][y] = 1;
max = k > max ? k : max;
for (int i = 0; i < 4; i++) { //四个方向进行搜索
nx = x + dx[i];
ny = y + dy[i];
if (nx >= 0 && nx < n&&ny >= 0 && ny < m && !visited[nx][ny] && graph[x][y] != graph[nx][ny]) { //探测判断
visited[nx][ny] = 1;
search(nx, ny, k+1); //进行下一次探测
}
}
return max;
}
int main(){
cin >> n >> m;
for (int i=0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> graph[i][j];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
memset(visited, 0, sizeof(visited)); //数据初始化
max = 0;
result[i][j] = search(i, j, 1);
}
}
cout << "结果:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}
return 0;
}