zoukankan      html  css  js  c++  java
  • hdu 1068 最大子序列和变形,,,

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 200
    using namespace std;
    struct node
    {
        int x,y,z;
    };
    int cmp(node a,node b)
    {
        if(a.x==b.x) return a.y<b.y;
        return a.x<b.x;
    }
    int mymax(int x,int y)
    {
        if(x>y) return x;
        return y;
    }
    int main()
    {
        int n;
        int Case=0;
        while(cin>>n&&n)
        {
            node fuck[maxn];
            int dp[maxn];
            memset(dp,0,sizeof(dp));
            int ret=0;
            while(n--)
            {
                int x,y,z;
                cin>>x>>y>>z;
                fuck[ret].x=x,fuck[ret].y=y,fuck[ret++].z=z;
                fuck[ret].x=x,fuck[ret].y=z,fuck[ret++].z=y;
                fuck[ret].x=y,fuck[ret].y=x,fuck[ret++].z=z;
                fuck[ret].x=y,fuck[ret].y=z,fuck[ret++].z=x;
                fuck[ret].x=z,fuck[ret].y=x,fuck[ret++].z=y;
                fuck[ret].x=z,fuck[ret].y=y,fuck[ret++].z=x;
            }
            sort(fuck,fuck+ret,cmp);
            dp[0]=fuck[0].z;
            for(int i=1;i<ret;i++)
            {
                dp[i]=fuck[i].z;
                for(int j=0;j<i;j++)
                {
                    if(fuck[j].x<fuck[i].x&&fuck[j].y<fuck[i].y)
                    {
                        dp[i]=mymax(dp[i],dp[j]+fuck[i].z);
                    }
                }
            }
            //这里的dp只是算出了每个i对应的值 并没有算出最大的
            int zz=dp[0];
            for(int i=1;i<ret;i++) if(zz<dp[i]) zz=dp[i];
            printf("Case %d: maximum height = %d
    ",++Case,zz);
        }
        return 0;
    }
    
  • 相关阅读:
    OJ生成器(一)制作Online Judge前的准备和策划
    中国剩余定理
    图片
    扩展GCD的一点心得
    用css控制连续英文字符或数字换行
    CTFHUB HTTP协议之请求方式
    PHP基础05---文件处理
    PHP基础04---文件包含
    PHP基础03---数组
    PHP基础01
  • 原文地址:https://www.cnblogs.com/z1141000271/p/6105133.html
Copyright © 2011-2022 走看看