zoukankan      html  css  js  c++  java
  • hdu1069

    题意:把给定的长方体(不限个数)叠加在一起,要求上面一个长方体的长和宽都比下面长方体的小,求这些长方体能叠加的最高的高度.(其中(3,2,1)可以摆放成(3,1,2)、(2,1,3)等)。

    思路:其实就是求最长的单调递减序列。在长和宽的递减下,求最大能得出的最大高度了。

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<math.h>
     6 using namespace std;
     7 
     8 struct block{
     9     int x,y,z;
    10 }a[100];
    11 
    12 bool cmp(block a,block b)
    13 {
    14     if(a.x>b.x) 
    15     return true;//按横坐标由大到小排序 
    16     if(a.x==b.x&&a.y>b.y) return true;//按 纵坐标排序 
    17     return false;
    18 }
    19 
    20 int dp[100]={0};
    21 
    22 int main()
    23 {
    24     int n,d[3],t=1;
    25     while(cin>>n)
    26     {
    27         if(n==0) break;
    28     //    memset(a,0,sizeof(a));
    29         int k=0;
    30         for(int i = 0;i< n ;i++)
    31         {
    32             cin>>d[0]>>d[1]>>d[2];//??为什么排序 ?不排序会WA, 
    33             sort(d,d+3);
    34             a[k].x=d[2];a[k].y=d[1];a[k].z=d[0];k++;//保持x为底边最小边 便于排序后比较。,高分别取三个不同值 
    35             a[k].x=d[2];a[k].y=d[0];a[k].z=d[1];k++;
    36             a[k].x=d[1];a[k].y=d[0];a[k].z=d[2];k++;
    37         }
    38         sort(a,a+k,cmp);
    39         for(int i =0; i < k ;i++)dp[i]=a[i].z;
    40         for(int i = k-1;i >= 0;i--) //看的题解是k-2,可是我觉得是k-1,不过两个都AC了 
    41         {                //上面是从大到小排序,这里从最小开始遍历
    42             for(int j = i+1;j<k;j++)
    43             {
    44                 if(a[i].x>a[j].x&&a[i].y>a[j].y)//最长递减序列和 
    45                     if(dp[i]<dp[j]+a[i].z)
    46                         dp[i]=dp[j]+a[i].z; 
    47             }
    48         }
    49         int ans =dp[0];
    50         for(int i=0;i<k;i++)
    51         {
    52             if(ans<dp[i])ans=dp[i];
    53          } 
    54          printf("Case %d: maximum height = %d
    ",t,ans);
    55          t++;
    56     }
    57     return 0;
    58 }
  • 相关阅读:
    HDU1272---(并查集)简单应用
    HDU1232 畅通工程---(经典并查集应用)
    HDU 1877 又一版 A+B(进制转换)
    L1-020. 帅到没朋友
    L2-001. 紧急救援---(Dijkstra,记录路径)
    JVM Class字节码之三-使用BCEL改变类属性
    JVM Class详解之一
    Jvm原理剖析与调优之内存结构
    虚拟化的发展历程和实现原理——图文详解
    JVM学习笔记(四)------内存调优
  • 原文地址:https://www.cnblogs.com/lyqf/p/9770024.html
Copyright © 2011-2022 走看看