zoukankan      html  css  js  c++  java
  • tyvj1192 迎春舞会之集体舞

    背景

        HNSDFZ的同学们为了庆祝春节,准备排练一场舞会。

    描述

        表演者排成n排,构成一个向前的正三角形(在屏幕上,即向下)。而就每个人,他有可能正面朝前(小的向前正三角形)、或向后三角形(小的向后正三角形)。
        然而这些人在服装上有明显区别——一部分穿冬季校服,其他的穿夏季校服。
        现在给出每个人的着衣情况,请你求穿夏季校服的同学所构成的最大正三角形,输出所含人数。
        

    输入格式

        第一排为n。
        接下来n排,第i排有2*i-1个有效字符(‘#’或‘-’,分别表示此同学穿冬季校服或穿夏季校服)。输入文件中出现空格,且空格只是为了保持整个三角形的形状。

    输出格式

        输出人数。

    测试样例1

    输入


    #-##----# 
    -----#- 
    ---#- 
    -#- 
    -

    输出

    9

    备注

    n<=100

    注意三角形只能小头朝下
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int maxn = 505;
    int n,a[maxn][maxn],f[maxn][maxn],ans,sum[maxn];
    int main(){
        cin>>n;
        char cmd;
        sum[1] = 1;
        for(int i = 1;i <= n;i++){
            for(int l = 1;l <= 2*(n-i) + 1;l++){
                int j = i + l - 1;
                scanf("%c",&cmd);
                while(cmd != '-' && cmd != '#') scanf("%c",&cmd);
                if(cmd == '#') a[i][j] = 1;
                else a[i][j] = 2;
            }
        }
        for(int i = 3;i <= 2 * n - 1;i += 2) sum[i] = sum[i-2] + i;
        for(int i = 1;i <= n;i++){
            for(int l = 1;l <= 2*(n-i) + 1;l++){
                int j = i + l - 1;
                if(a[i][j] == 2) f[i][j] = 1;
                if(l & 1) 
                    if(a[i][j] == 2 && a[i][j+1] == 2 && a[i][j+2] == 2 && a[i+1][j+1] == 2) f[i][j] = 3;
                ans = max(ans,f[i][j]);
            }
        }
        for(int k = 5;k <= 2 * n - 1;k += 2){
            for(int i = 1;i <= n;i++){
                for(int l = 1;l <= 2*(n-i) + 1;l++){
                    int j = i + l - 1;
                    if((l & 1) && f[i][j] >= k - 2 && f[i][j+2] >= k - 2 && f[i+1][j+1] >= k - 2){
                        f[i][j] = k;
                        ans = max(ans,k);
                    }
                }
            }
        }
        cout<<sum[ans];
        return 0;
    } 
  • 相关阅读:
    微信支付
    微信分享
    微信获取用户
    js处理富文本编辑器转义、去除转义、去除HTML标签
    最新亲测能用的手机号码正则
    JS监听页面滚动到底部事件
    解决windows系统80端口被占用问题
    thinkphp5.0配置nginx重写规则
    php关于private、protected、public的区别
    centeros7远程访问mysql5.7
  • 原文地址:https://www.cnblogs.com/hyfer/p/5754664.html
Copyright © 2011-2022 走看看