标记所有情况的DFS(计数): 登录后复制 dfs(x,y): if x,y 不符合:return 标记该状态 cnt++; dfs(邻接状态) cnt为总的标记次数 1.2.3.4.5.6.7.8. 最大连通块:实质是多次使用 标记所以情况的DFS(计数) 登录后复制 dfs(x,y): if((x,y)出界或G[x][y]==0)return; G[x][y]=0; cnt++; dfs(x+1,y); dfs(x-1,y); dfs(x,y+1); dfs(x,y-1); for(i) for(j) if(G[i][j]==1) cnt=0; dfs(i,j); 更新maxcnt 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15. 登录后复制 int area=0; int maxarea=0; void dfs(int x,int y){ if(!(x>=0&&y>=0&&x<n&&y<m))return; if(G[x][y]=='.')return; G[x][y]='.'; area++; dfs(x+1,y); dfs(x,y+1); dfs(x-1,y); dfs(x,y-1); } void solve(){ for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(G[i][j]=='#'){ area=0; dfs(i,j); maxarea=max(maxarea,area); } } } cout<<maxarea; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11820533