zoukankan      html  css  js  c++  java
  • 统计八连块

    统计八连块B612
    难度级别:B;            运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
    试题描述
    输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横竖或者对角线方向),就说它们属于同一个八连块。例如,下图中有两个八连块。                        
    输入
    第一行包括两个正整数m和n,由空格隔开,接下来的m行,每行n个字符,字符只包括“*”和“@”。
    输出
    一个自然数,表示八连块的个数。
    输入示例
    5 5 ****@ *@@*@ *@**@ @@@*@ @@**@
    输出示例
    2
    其他说明
    数据范围:0<m,n<101。
    #include<iostream>
    using namespace std;
    char a[102][102];
    int m,n,s[102][102];
    void dsf(int i,int j,int id)
    {
        if(i<0||i>=m||j<0||j>=n) return;
        if(s[i][j]>0||a[i][j]!='@') return;
        s[i][j]=id;
        dsf(i-1,j-1,id);
        dsf(i-1,j,id);
        dsf(i-1,j+1,id);
        dsf(i,j-1,id);
        dsf(i,j+1,id);
        dsf(i+1,j-1,id);
        dsf(i+1,j,id);
        dsf(i+1,j+1,id);
    }
    int main()
    {
        int i,j,cnt=0;
        cin>>n>>m;
        for(i=0;i<m;i++)
        {
           cin>>a[i];
        }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                if(s[i][j]==0&&a[i][j]=='@')
                {
                    dsf(i,j,++cnt);
                }
            }
        }
        cout<<cnt;
        system("pause");
    }
    蒟蒻总是更懂你✿✿ヽ(°▽°)ノ✿
  • 相关阅读:
    《山里的日子(记录片)》观后感——回不去的农村
    Android事件分发传递
    《活着》观后感——时代
    Android6.0动态获取权限
    Androidannotations框架
    Android屏幕适配笔记
    Android 网络状态检测
    氢氘交换
    springboot datajpa 简明说明
    算法学习
  • 原文地址:https://www.cnblogs.com/WWHHTT/p/6572443.html
Copyright © 2011-2022 走看看