洛谷 P1451 求细胞数量

题目描述

一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。(1<=m,n<=100)?

输入输出格式

输入格式:

 

输入:整数m,n(m行,n列)

矩阵

 

输出格式:

 

输出:细胞的个数

 

输入输出样例

输入样例#1: 复制
4  10
0234500067
1034560500
2045600671
0000000089
输出样例#1: 复制
4

 思路:搜索

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,ans;
char s[110];
int map[110][110];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
void dfs(int x,int y){
    for(int i=0;i<4;i++){
        int cx=dx[i]+x;
        int cy=dy[i]+y;
        if(cx>=1&&cx<=n&&cy>=1&&cy<=m&&map[cx][cy]){
            map[cx][cy]=0;
            dfs(cx,cy);
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%s",s);
        for(int j=0;j<m;j++)
            if(s[j]>='1'&&s[j]<='9')    map[i][j+1]=1;
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(map[i][j]){
                dfs(i,j);
                ans++;
            }
    cout<<ans;    
}

 

posted @ 2017-11-23 21:30  一蓑烟雨任生平  阅读(226)  评论(0编辑  收藏  举报