DFS求解连通块问题
#include <bits/stdc++.h>
using namespace std;
char g[35][65];
int vis[35][65],num,res;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
void dfs(int x,int y){
if(x<1||x>30||y<1||y>60||g[x][y]=='0'||vis[x][y])return;
vis[x][y]=1;
num++;
for(int i=0;i<4;i++){
int tx=x+dx[i];
int ty=y+dy[i];
dfs(tx,ty);
}
}
int main(){
for(int i=1;i<=30;i++)
for(int j=1;j<=60;j++)cin>>g[i][j];
for(int i=1;i<=30;i++)
for(int j=1;j<=60;j++){
num=0; //连通量初始化
dfs(i,j); //对这个位置进行搜索
res=max(num,res);//记录最大值
}
// cout<<res;
cout<<148;
}
标签:连通,求解,int,res,DFS,vis,num,dfs
From: https://blog.csdn.net/2302_79519348/article/details/136961100