#include <iostream>
using namespace std;
int max_area=0;
void dfs(int a[][10], int i, int j, int h, int w, int flag, int area){
a[i][j] = -flag;
if(i-1>=0 && a[i-1][j] > 0){
area++;
dfs(a, i-1, j, h, w, flag, area);
}
if(j-1>=0 && a[i][j-1] > 0){
area++;
dfs(a, i, j-1, h, w, flag, area);
}
if(i+1<h && a[i+1][j] > 0){
area++;
dfs(a, i+1, j, h, w, flag, area);
}
if(j+1<w && a[i][j+1] > 0){
area++;
dfs(a, i, j+1, h, w, flag, area);
}
area++;
if(area > max_area){
max_area = area;
}
}
int main() {
// cout << "Hello World!" << endl;
int a[10][10];
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
a[i][j] = 0;
}
}
a[1][1] = 1;
a[1][2] = 1;
a[4][5] = 2;
a[5][5] = 2;
a[6][5] = 2;
a[5][4] = 2;
a[5][6] = 2;
int flag = 1;
int area = 0;
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
if(a[i][j] > 0){
area = 0;
dfs(a, i, j, 10, 10, flag, area);
flag++;
}
}
}
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<max_area<<endl;
}
0 0 0 0 0 0 0 0 0 0
0 -1 -1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 -2 0 0 0 0
0 0 0 0 -2 -2 -2 0 0 0
0 0 0 0 0 -2 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
5
附錄
如何將二維數組作爲函數的參數傳遞
https://blog.csdn.net/xuleicsu/article/details/919801