最大连通域
Posted 爆米花好美啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大连通域相关的知识,希望对你有一定的参考价值。
#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
以上是关于最大连通域的主要内容,如果未能解决你的问题,请参考以下文章