• aoj-0118 property distribution(搜索)


    Time limit1000 ms

    Memory limit131072 kB

    タナカ氏が HW アールの果樹園を残して亡くなりました。果樹園は東西南北方向に H × Wの区画に分けられ、区画ごとにリンゴ、カキ、ミカンが植えられています。タナカ氏はこんな遺言を残していました。 

    果樹園は区画単位でできるだけ多くの血縁者に分けること。ただし、ある区画の東西南北どれかの方向にとなりあう区画に同じ種類の果物が植えられていた場合は、区画の境界が分からないのでそれらは 1 つの大きな区画として扱うこと。 

    例えば次のような 3 × 10 の区画であれば ('リ'はリンゴ、'カ'はカキ、'ミ'はミカンを表す) 

    同じ樹がある区画の間の境界を消すと次のようになり、 

    結局 10 個の区画、つまり 10 人で分けられることになります。 

    雪が降って区画の境界が見えなくなる前に分配を終えなくてはなりません。あなたの仕事は果樹園の地図をもとに分配する区画の数を決めることです。 

    果樹園の地図を読み込み、分配を受けられる血縁者の人数を出力するプログラムを作成してください。 

    Input

    複数のデータセットが与えられます。各データセットは空白で区切られた HW (H, W ≤ 100) を含む行から始まり、続いて H × W の文字からなる H 行の文字列が与えられます。この文字列には、リンゴを表す '@'、カキを表す '#'、ミカンを表す '*'、の 3 文字しか現れません。 

    入力はゼロが2つの行で終わります。データセットの数は 20 を超えません。 

    Output

    各データセットごとに、分配を受ける人数を1行に出力してください。 

    Sample Input

    10 10
    ####*****@
    @#@@@@#*#*
    @##***@@@*
    #****#*@**
    ##@*#@@*##
    *@@@@*@@@#
    ***#@*@##*
    *@@@*@@##@
    *@*#*@##**
    @****#@@#@
    0 0
    

    Output for the Sample Input

    33
    题意 一个大方格被分成几个区域,和水洼差不多
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    #define PI 3.14159265358979323846264338327950
    #define INF 0x3f3f3f3f3f3f3f3f;
    
    char a[110][110],ch;
    int n,m;
    int dx[4]={0,1,0,-1};
    int dy[4]={1,0,-1,0};
    int ans;
    
    void dfs(int x,int y)
    {
        if(x<1 || y<1 || x>n || y>m)
            return ;
        if(a[x][y]!=ch)
            return ;
        a[x][y]='.';
        for(int i=0;i<4;i++)
            dfs(x+dx[i],y+dy[i]);
    }
    
    int main()
    {
        while(scanf("%d %d",&n,&m) && (n||m))
        {
            int i,j;
            for( i=1;i<=n;i++)
                for( j=1;j<=m;j++)
                    cin>>a[i][j];
            ans=0;
            for(i=1;i<=n;i++)
                for(j=1;j<=m;j++)
                {
                    if(a[i][j]=='.')
                        continue;
                    ch=a[i][j];
                    dfs(i,j);
                    ans++;
                }
            printf("%d
    ",ans);
        }
        
    }
  • 相关阅读:
    git 拉取开发代码
    android webview
    H5 元素定位
    Python中模块
    服务器1
    活动
    宝塔面板-阿里部署
    最新版Xshell、Xftp注册机NetSarang
    最新版Navicat Premium激活,附激活工具
    9月29更新美版T-mobile版本iPhone7代和7P有锁机卡贴解锁方法
  • 原文地址:https://www.cnblogs.com/smallhester/p/9499294.html
Copyright © 2020-2023  润新知