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 }