【我为标程写注释】细胞

1.细胞

题目描述

一矩形阵列由数字0 到9 组成,数字1 到9 代表细胞,细胞的定义为沿

细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞

个数。

输入

一行两个数,N,M (1<=n,m<=100)

N*M 的矩阵

输出

一个数据,表示细胞个数。

这题就是一个搜索,因为数据小,所以暴力一点就可以了

 1 /*
 2     写代码人:std(不
 3     批注人:zx 
 4     指导老师:gg 
 5 */
 6 #include<iostream>
 7 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 }
原文地址:https://www.cnblogs.com/aristocrat/p/8822073.html