细胞问题
来源:互联网 发布:深圳网络营销黑马网络 编辑:程序博客网 时间:2024/04/30 04:07
题目
Description:
一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。
如:阵列
0234500067
1034560500
2045600671
0000000089
有4个细胞。
Input:
输入共m+1行第一行有两个数据,分别表示总行数和总列数以下的m行,每行有n个0-9之间的数
Output:
细胞个数
Sample Input:
4 10
0234500067
1034560500
2045600671
0000000089
Sample Output:
4
解题思路
这是一道广搜题。将整个阵列搜一遍,如果是true就搜索,直到全部为false就退出。
代码
#include<cstdio>#include<cstring>using namespace std;const int max=600;int head,tail,m,n,cc,state[10000][3];int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};bool a[max][max];void bfs(int xx,int yy){ head=0; tail=1; state[1][1]=xx; state[1][2]=yy; a[xx][yy]=false; do { head++; for (int i=0;i<=3;i++) { int x=state[head][1]+dx[i]; int y=state[head][2]+dy[i]; if (x>0&&x<=m&&y>0&&y<=n&&a[x][y]==true) { tail++; state[tail][1]=x; state[tail][2]=y; a[x][y]=false; } } } while (head<tail);}int main(){ memset(a,false,sizeof(a)); scanf("%d%d\n",&m,&n); char c; 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; } c=getchar(); } cc=0; for (int i=1;i<=m;i++) for (int j=1;j<=n;j++) if (a[i][j]==true) { bfs(i,j); cc++; } printf("%d",cc);}
阅读全文
0 0
- 细胞问题
- 细胞问题
- 问题 H: 查找细胞
- 【dfs】【bfs】细胞问题
- 细胞问题-ssl 2324
- [附中OJ]细胞问题
- SSL P2324 细胞问题
- SSL_2324 细胞问题
- SSL P2324 细胞问题 题目
- 细胞
- 细胞
- 细胞
- 细胞问题(广度优先搜索)
- BFS(广搜) 细胞问题
- SSL JudgeOnlie 2324——细胞问题
- 懒人读算法(二)-细胞问题
- 细胞问题(广搜练习题)
- 文学细胞
- 串口屏光标移动花屏的问题解决
- 玩蛇是肯定要玩的,不如就从今天开始吧
- js版算24点小游戏
- 使用caffe ssd中遇到的问题
- ios——注册通知的使用示例
- 细胞问题
- 图片的无序预加载基础实例
- JAVA问题总结———在此文
- 【数据结构】动态顺序表
- iOS通知拾遗
- JS的解析与执行——全局预处理
- 数据结构实验之查找五:平方之哈希表
- helloworld活动编写
- APP主页面变成类似弹窗形式