zoukankan      html  css  js  c++  java
  • fans

     
       试题编号:0610 收 藏   
    D模拟101-1::球迷
    难度级别:A; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
    试题描述

    一个球场C的球迷看台可容纳M*N个球迷。官方想统计一共有多少球迷群体,最大的球迷群体有多少人。

    球迷选座特性:同球迷群体会选择相邻座位,不同球迷群体选择不相邻的座位。(相邻包括前后相邻、左右相邻、斜对角相邻);

    给定一个M*N的二维球场,0代表该位置没人,1代表该位置有人,希望输出球队群体个数P,最大的球队群体人数Q。

    输入
    第一行,2个数字,M、N,使用英文逗号隔开。
    接下来M行,每行N个数字,使用英文逗号隔开。
    输出
    一行,2数字,P和Q。
    输入示例
    10,10
    0,0,0,0,0,0,0,0,0,0
    0,0,0,1,1,0,1,0,0,0
    0,1,0,0,0,0,0,1,0,1
    1,0,0,0,0,0,0,0,1,1
    0,0,0,1,1,1,0,0,0,1
    0,0,0,0,0,0,1,0,1,1
    0,1,1,0,0,0,0,0,0,0
    0,0,0,1,0,1,0,0,0,0
    0,0,1,0,0,1,0,0,0,0
    0,1,0,0,0,0,0,0,0,0
    输出示例
    6,8
    其他说明
    对于100%的数据,1<=M,N<=3e3。

                    这道题是本蒟蒻昨天考试的一道题,拿了满分(开心)。

                    这道题是一道搜索,深搜和广搜都可以。我写的是深搜,不用回溯。然后上参考代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,m,ans,sum,maxn;
     4 char a[3005][3005];
     5 bool f[3005][3005];
     6 void dfs(int x,int y)
     7 {
     8     if(x<1||x>m||y<1||y>n||f[x][y]==true||a[x][y]=='0') return;//返回条件 
     9     sum++;//记录最大球迷群体 
    10     f[x][y]=true;//标记 
    11     dfs(x-1,y-1);//向八个方向搜索 
    12     dfs(x-1,y);
    13     dfs(x-1,y+1);
    14     dfs(x,y-1);
    15     dfs(x,y+1);
    16     dfs(x+1,y-1);
    17     dfs(x+1,y);
    18     dfs(x+1,y+1);
    19 }
    20 int main()
    21 {
    22     //freopen("fans.in","r",stdin);
    23     //freopen("fans.out","w",stdout);
    24     scanf("%d,%d
    ",&m,&n);//输入长和宽 
    25     for(int i=1;i<=m;i++)
    26     {
    27         for(int j=1;j<=n;j++) 
    28         {
    29             char ch;
    30             a[i][j]=getchar();//用getchar读入,先读入数,再读入逗号和换行 
    31             ch=getchar();
    32         }
    33     }
    34     for(int i=1;i<=m;i++)
    35     {
    36         for(int j=1;j<=n;j++)
    37         {
    38             if(a[i][j]=='1'&&f[i][j]==false)//如果是球迷并且没搜过就搜索        
    39             {
    40                 ans++;//统计有几个球迷群体 
    41                 dfs(i,j);//搜索 
    42                 maxn=max(maxn,sum);//统计最大球迷群体 
    43                 sum=0;//把计数的变量赋成零 
    44             }
    45         }
    46     }
    47     printf("%d,%d",ans,maxn);//输出有几个球迷群体和最大球迷群体 
    48     return 0;//完美结束 
    49 }
  • 相关阅读:
    谈薪资
    测试工程师 技能要求:java编程,数据库,linux操作系统,自动化测试开发,性能测试,安全测试
    测试工程师 工作要求
    python有木有哪些必须要学习的高级模块
    jmeter 网速
    fiddler抓包https
    做性能测试时如何实时监测服务器或接口性能???
    [drp 3]读取Xml配置文件,连接数据库
    [drp 2]String、StringBuffer和StringBuilder的区别
    SQL 1:常用SQL语句
  • 原文地址:https://www.cnblogs.com/jiuduSHENBENG/p/9491856.html
Copyright © 2011-2022 走看看