zoukankan      html  css  js  c++  java
  • fans

    【问题描述】

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

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

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

    【输入】

    第一行,2个数字,M、N,使用英文逗号隔开。

    接下来M行,每行N个数字,使用英文逗号隔开。

    【输出】

    一行,2数字,P和Q。

    题解:见代码注释

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int a[3005][3005];
    int cnt;
    int max_s;
    int ans;
    int n,m;
    int next_x[9]={1,1,1,0,0,0,-1,-1,-1};
    int next_y[9]={0,-1,1,0,-1,1,1,-1,0};
    void dfs(int x,int y)
    {
    	
    	if(x<1 || x>n || y<1 || y>m || a[x][y]==0) return;//不符合要求的dfs直接return 
    	ans++;
    	a[x][y]=0;
    	dfs(x,y+1);
    	dfs(x,y-1);
    	dfs(x+1,y);
    	dfs(x+1,y+1);
    	dfs(x+1,y-1);
    	dfs(x-1,y+1);
    	dfs(x-1,y-1);
    	dfs(x-1,y);
    	//继续dfs 
    }
    int main()
    {
    	//freopen("fans.in","r",stdin);
    	//freopen("fans.out","w",stdout);
    	scanf("%d,%d",&n,&m);
    	char feiwu;//废物的拼音,只用来占空格位的char我都用feiwu 
    	for(int i=1;i<=n;i++)
    	{
    		feiwu=getchar();
    		for(int j=1;j<=2*m-1;j++)
    		{
    			char p=getchar();//getchar较cin和scanf更快,否则会超时 
    			if(p=='0')//将字符变数字 
    			{
    				a[(i+1/2)][(j+1)/2]=0;
    			}
    			else if(p=='1')//将字符变数字 
    			{
    				a[(i+1/2)][(j+1)/2]=1;
    			}
    			else continue;//没用 
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    		for(int j=1;j<=m;j++)
    		{
    			if(a[i][j])
    			{
    				ans=0;
    				cnt++;//区域数 
    				dfs(i,j);
    				max_s=max(max_s,ans);//算最大的区域 
    			}
    		}
    	}
    	cout<<cnt<<","<<max_s<<endl;//输出 
    	return 0;
    }
    

      

  • 相关阅读:
    实现可重启线程
    让别人能登陆你的mysql
    zmq消息订阅
    git备忘
    【LeetCode】数组排列问题(permutations)(附加next_permutation解析)
    【LeetCode】 数相加组合 Combination Sum
    【LeetCode】【找元素】Find First and Last Position of Element in Sorted Array
    【LeetCode】【数组归并】Merge k Sorted Lists
    【LeetCode】【动态规划】Generate Parentheses(括号匹配问题)
    【Leetcode】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/chen-1/p/9487534.html
Copyright © 2011-2022 走看看