SSL-ZYC 2324 细胞问题
2017-12-30 14:28
204 查看
题目大意:
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
比如:
一共有4个细胞。
思路:
这是一道BFS的题目,从a[1][1]搜到a
[m],找到一个细胞就把这个细胞和紧挨着的细胞清零,并计数。
也就是说,每找到一个细胞就进行一次BFS,将相邻的细胞清零后继续寻找下一个细胞。
(温馨提示:数字1,2,3,4,5,6,7,8,9其实没有区别,都是细胞,不需要分开处理)
代码:
(这道题和找石油很像,方法基本一样)
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
比如:
一共有4个细胞。
思路:
这是一道BFS的题目,从a[1][1]搜到a
[m],找到一个细胞就把这个细胞和紧挨着的细胞清零,并计数。
也就是说,每找到一个细胞就进行一次BFS,将相邻的细胞清零后继续寻找下一个细胞。
(温馨提示:数字1,2,3,4,5,6,7,8,9其实没有区别,都是细胞,不需要分开处理)
代码:
#include <iostream> #include <cstdio> using namespace std; bool a[101][101]; int n,m,father[10001],state[3][10001],sum; int dx[5]={0,0,0,1,-1}; int dy[5]={0,-1,1,0,0}; void bfs(int x,int y) { int head,tail,i,j,qx,qy; head=0; tail=1; father[1]=0; a[x][y]=0; state[1][1]=x; state[2][1]=y; //初始化 do { head++; for (i=1;i<=4;i++) { qx=state[1][head]+dx[i]; //qx表示行 qy=state[2][head]+dy[i]; //qy表示列 if (qx>0&&qx<=n&&qy>0&&qy<=m&&a[qx][qy]) //如果没出界并且是细胞 { tail++; father[tail]=head; //入队 state[1][tail]=qx; state[2][tail]=qy; a[qx][qy]=0; } } } while(head<tail); } int main() { int i,j; char read; scanf("%d%d\n",&n,&m); for (i=1;i<=n;i++) { for (j=1;j<=m;j++) { read=getchar(); if (read>='1'&&read<='9') a[i][j]=1; } read=getchar(); } for (i=1;i<=n;i++) for (j=1;j<=m;j++) //一个一个找细胞 { if (a[i][j]==1) //如果这是细胞 { bfs(i,j); //寻找与它相邻的细胞 sum++; //计数 } } printf("%d",sum); return 0; }
(这道题和找石油很像,方法基本一样)
相关文章推荐
- SSL JudgeOnlie 2324——细胞问题
- SSL_2324 细胞问题
- 细胞问题-ssl 2324
- SSL-ZYC 1760 商店选址问题
- SSL-ZYC 1613 最短路径问题
- SSL-ZYC 1761 城市问题
- SSL-ZYC 1612 最优布线问题
- ubuntu+openlte安装遇到缺少polarssl library的问题
- 使用webView访问https的url-处理SslError解决android2.2版本之前的https请求问题
- (ssl1014)P1049 装箱问题
- SSL 1644——取数字问题
- Android之SDK更新问题Failed to fetch URL https://dl-ssl.google.com/android...
- docker login CA认证问题/添加自签发的 SSL 证书为受信任的根证书
- (ssl1640)叠放箱子问题
- php中ssl开发的若干问题
- 城市问题【SSL 1761】
- SSL-ZYC 方案数
- SSL-ZYC 小麦高度