• 洛谷 P1767 家族_NOI导刊2010普及(10)


    题目描述

    在一个与世隔绝的岛屿上,有一个有趣的现象:同一个家族的人家总是相邻的(这里的相邻是指东南西北四个方向),不同的家族之间总会有河流或是山丘隔绝,但同一个家族的人不一定有相同姓氏。现在给你岛上的地图,求出岛上有多少个不同的家族。岛上的地图有n行,每行有若干列,每个格子中要么是“ ”,表示大海,要么是“*”,表示河流或山丘,要么是小写字母,表示一户人家的姓氏。

    输入输出格式

    输入格式:

     

    第一行是个数字N,表示下面信息的行数。接下来是N行字符,每行由小写字母和*号组成,有些行的最前面也可能包含若干连续的空格,表示这些区域是大海,每一行最多不超过200个字符。

     

    输出格式:

     

    一个数字,表示家族数。

     

    输入输出样例

    输入样例#1:
    4
    *zlw**pxh
    l*zlwk*hx*
    w*tyy**yyy
            zzl
    
    输出样例#1:
    3

    说明

    10%的数据,n≤1。 30%的数据,n≤10。 100%的数据,n≤100每一行最多不超过200个字符。

    _NOI导刊2010普及(10)

    思路:谔谔,大水题。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int dx[4]={1,0,0,-1};
    int dy[4]={0,1,-1,0};
    char c[210],a[210];
    int n,m,num,map[110][210],vis[110][210];
    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&&!vis[cx][cy]&&!map[cx][cy]){
                vis[cx][cy]=1;
                dfs(cx,cy); 
            }
        }
    }
    int main(){
        //freopen("family.in","r",stdin);
        //freopen("family.out","w",stdout);
        scanf("%d",&n);
        memset(map,-1,sizeof(map));
        gets(c);
        for(int i=1;i<=n;i++){
            gets(c);
            int len=strlen(c);
            for(int j=0;j<len;j++)
                if(c[j]>='a'&&c[j]<='z')    map[i][j+1]=0;
            m=max(len,m);
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(!map[i][j]&&!vis[i][j]){
                    num++;
                    dfs(i,j);
                }
        cout<<num;
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    记一个centos分区大小调整过程
    破解StarUML3.01最新版 for Linux(Ubuntu16LTS)
    为什么我们要使用int类型来保存时间类型的数据。
    sphinx-doc的中文搜索
    ubuntu下file_get_contents返回空字符串
    PSR-PHP开发规范(本文版权归作者:luluyrt@163.com)
    PHP单例模式
    PHP中 PCRE正则表达式模式修饰符“u” 的使用。
    Mysql 插入时间时报错Incorrect datetime value: '' for column 'createtime'
    如何给list清空
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7506065.html
Copyright © 2020-2023  润新知