zoukankan      html  css  js  c++  java
  • UVA437

    题意: N个立方体,给出长宽高,把他们堆起来,最高能堆多高,要求在下面的立方体的长宽严格大于在上面的。

    其实原本我是不会的,然后看了网上大神的做法 = =详见代码

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 struct node
     6 {
     7     int c,k,g;
     8     void init(int x,int y,int z)
     9     {
    10         c=x; k=y; g=z;
    11     }
    12 }a[200];
    13 int len[200];
    14 bool cmp(node x,node y)
    15 {
    16     return (x.c*x.k)<(y.c*y.k);
    17 }
    18 int main()
    19 {
    20     int n,x,y,z,cnt=0;
    21     while(scanf("%d",&n)!=EOF && n)
    22     {
    23         int m=0;
    24         for(int i=0;i<n;i++)
    25         {
    26             scanf("%d%d%d",&x,&y,&z);   // 立方体的六种摆放方法全部存起来 
    27             a[m++].init(x,y,z);
    28             a[m++].init(x,z,y);
    29             a[m++].init(y,x,z);
    30             a[m++].init(y,z,x);
    31             a[m++].init(z,x,y);
    32             a[m++].init(z,y,x);
    33         }
    34         sort(a,a+m,cmp);  // 按照底面积排个序 ,在上面的立方体底面积一定小
    35         int mx=-1; len[0]=1;
    36         for(int i=1;i<m;i++)   // LIS 求最高高度 
    37         {
    38             len[i]=a[i].g;
    39             for(int j=0;j<i;j++)
    40             {
    41                 if((a[i].c>a[j].c) && (a[i].k>a[j].k))
    42                 {
    43                     len[i]=max(len[i],len[j]+a[i].g);
    44                     mx=len[i]>mx?len[i]:mx;
    45                 }
    46             }
    47         }
    48         printf("Case %d: maximum height = %d
    ",++cnt,mx);
    49     }
    50     return 0;    
    51 }
  • 相关阅读:
    深入理解Javascript变量作用域
    phpcms v9取消验证码
    typecho去index.php
    cms与blog汇总
    phpcms修改增加编辑时摘要自动提取的数量
    phpcms后台主菜单不显示
    phpcms sitemaps修改
    phpcms打印数据
    phpcms tag页调用缩略图
    php自动添加相关文章
  • 原文地址:https://www.cnblogs.com/ember/p/4862131.html
Copyright © 2011-2022 走看看