EOJ-2848. 华师大卫星照片
思路:
用深度算法递归
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int w,h;
char c[1010][1010]={};
int go[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//位移函数
int DFS(int i,int j){
if(c[i][j]=='.')return 0;
c[i][j]='.';
int ans=1;
for(int k=0;k<4;k++){
int ni=i+go[k][0];
int nj=j+go[k][1];
if(ni<0||ni>=h||nj<0||nj>=w){//判断边界条件
continue;
}
ans+=DFS(ni,nj);
}
return ans;
}
int main(){
cin>>w>>h;
getchar();
for(int i=0;i<h;i++){
for(int j=0;j<w;j++){
cin>>c[i][j];
}
getchar();
}
int ans=0;
for(int i=0;i<h;i++){//把每个节点都遍历一遍当做出发点进行DFS
for(int j=0;j<w;j++){
if(c[i][j]=='*')ans=max(ans,DFS(i,j));
}
}
cout<<ans<<endl;
return 0;
}