SSL_2324 细胞问题

来源:互联网 发布:mt4软件手机版 编辑:程序博客网 时间:2024/05/16 20:30

题意:

    求一个矩阵里面有几个板块。

思路:

     用广搜。搜到一个就清除周边连接的板块,然后统计个数。

代码:

#include<cstdio>using namespace std;int ans,n,m,state[600][3];char c;short dx[4]={1,-1,0,0},dy[4]={0,0,-1,1};bool a[61][61];void bfs(int p,int q){int head,tail,x,y;head=0;tail=1;state[1][1]=p;state[1][2]=q;a[p][q]=false;do{head++;for (int i=0;i<=3;i++){x=state[head][1]+dx[i];y=state[head][2]+dy[i];if (x>=1&&x<=m&&y>=1&&y<=n&&a[x][y]){tail++;state[tail][1]=x;state[tail][2]=y;a[x][y]=false;//清除}}}while(head<tail);}int main(){scanf("%d%d",&m,&n);c=getchar();for (int i=1;i<=m;i++){for (int j=1;j<=n;j++){c=getchar();    if (c>'0'&&c<='9') a[i][j]=true;else a[i][j]=false; }    c=getchar();}for (int i=1;i<=m;i++) for (int j=1;j<=n;j++)//一个一个判断 if (a[i][j])//是的话就清除周边板块 {  bfs(i,j);//清除周边板块  ans++; }       printf("%d",ans);}



原创粉丝点击