P1451 求细胞数量
Posted woshishabiye
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P1451 求细胞数量相关的知识,希望对你有一定的参考价值。
https://www.luogu.org/problemnew/show/P1451<----这里是原题链接
这道题的题意大致是求一个矩阵中非0联通块的个数,那么我们可以dfs每一个块
对于每一个块,ans++后把所有块中的数字归零(吃掉)
所以代码是这样的
1 #include<iostream> 2 #include<queue> 3 #include<cstdio> 4 using namespace std; 5 const int maxn = 105; 6 int dx[8]={-1,0,1,0}; 7 int dy[8]={0,1,0,-1}; 8 bool a[maxn][maxn]; 9 char c; 10 int n,m,ans=0; 11 void dfs(int x,int y) 12 { 13 for(int i=0;i<4;i++) 14 { 15 int xx=x+dx[i]; 16 int yy=y+dy[i]; 17 if(a[xx][yy]==1) 18 { 19 a[xx][yy]=0; 20 dfs(xx,yy); 21 } 22 } 23 } 24 int main() 25 { 26 cin>>n>>m; 27 for(int i=1;i<=n;i++) 28 { 29 for(int j=1;j<=m;j++) 30 { 31 cin>>c; 32 if(c==‘0‘)a[i][j]=0; 33 else a[i][j]=1; 34 } 35 } 36 for(int i=1;i<=n;i++) 37 { 38 for(int j=1;j<=m;j++) 39 { 40 if(a[i][j]==1) 41 { 42 ans++; 43 dfs(i,j); 44 } 45 } 46 } 47 cout<<ans; 48 }
那么这样子就解决啦!!!
以上是关于P1451 求细胞数量的主要内容,如果未能解决你的问题,请参考以下文章