简单搜索
#include#include #include using namespace std;int data[55][55],n,m;bool vis[55][55];int d=0,mx=0,tmp=0;void dfs(int i,int j,int d){ //printf("%d %d\n",i,j); if(vis[i][j]) return; vis[i][j]=1; tmp++; if((data[i][j]&1)==0) dfs(i,j-1,d); if((data[i][j]&2)==0) dfs(i-1,j,d); if((data[i][j]&4)==0) dfs(i,j+1,d); if((data[i][j]&8)==0) dfs(i+1,j,d);}int main(){ memset(vis,0,sizeof(vis)); cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>data[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(!vis[i][j]) { d++; tmp=0; dfs(i,j,d); mx=max(mx,tmp); //printf("%d %d\n",i,j); } cout< < < <