码迷,mamicode.com
首页 > 其他好文 > 详细

aoj-0118 property distribution(搜索)

时间:2018-08-19 00:57:17      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:output   algo   void   pre   using   3.1   property   \n   The   

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\n",ans);
    }
    
}

 

aoj-0118 property distribution(搜索)

标签:output   algo   void   pre   using   3.1   property   \n   The   

原文地址:https://www.cnblogs.com/smallhester/p/9499294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!