1.细胞
题目描述
一矩形阵列由数字0 到9 组成,数字1 到9 代表细胞,细胞的定义为沿
细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞
个数。
输入
一行两个数,N,M (1<=n,m<=100)
N*M 的矩阵
输出
一个数据,表示细胞个数。
这题就是一个搜索,因为数据小,所以暴力一点就可以了
1 /* 2 写代码人:std(不 3 批注人:zx 4 指导老师:gg 5 */ 6 #include7 using namespace std; 8 int m,n; 9 int a[50][80];10 int total;11 void work(int u,int v) //搜索的过程 12 {13 a[u][v] = 0; //避免重复搜索 14 if(u != m - 1 && a[u+1][v] != 0) work(u+1,v);15 if(v != 0 && a[u][v-1] != 0) work(u,v-1);16 if(v != n-1 && a[u][v+1] != 0) work(u,v+1);17 if(u!=0 && a[u-1][v] != 0) work(u-1,v);18 }19 int main()20 {21 //freopen("cell.in","r",stdin);22 //freopen("cell.out","w",stdout);23 total=0;24 scanf("%d%d",&m,&n);25 char ppp;26 int i,j;27 for(i = 0;i < m;i++)28 for(j = 0;j < n;j++){29 scanf("%c",&ppp);30 a[i][j] = ppp - '0'; //读入数据。这是scanf读入char的优点√ 31 }32 for(i = 0;i < m;i++){33 for(j = 0;j < n;j++){34 if(a[i][j]!=0){35 work(i,j);36 total++; //每找到一个细胞(?)就+1 37 }38 }39 }40 41 printf("%d",total);42 return 0;43 }