zoukankan      html  css  js  c++  java
  • 紫书动规 例题9-2 UVA

    题目链接:

    https://vjudge.net/problem/UVA-437

    题意:

    题解:

    dp[i][j]:=考虑到前i个立方体并且第i个立方体以标号为j为高的最大值

    代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define MS(a) memset(a,0,sizeof(a))
     5 #define MP make_pair
     6 #define PB push_back
     7 const int INF = 0x3f3f3f3f;
     8 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;
     9 inline ll read(){
    10     ll x=0,f=1;char ch=getchar();
    11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    12     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    13     return x*f;
    14 }
    15 //////////////////////////////////////////////////////////////////////////
    16 const int maxn = 1e5+10;
    17 
    18 int n;
    19 int block[40][3],d[40][3];
    20 
    21 void get(int* v,int b,int x){
    22     int idx = 0;
    23     for(int i=0; i<3; i++)
    24         if(i!=x)
    25             v[idx++] = block[b][i];
    26 }
    27 
    28 int dp(int i,int j){
    29     if(d[i][j] >= 0) return d[i][j];
    30     d[i][j] = 0;
    31     int v[2],v2[2];
    32     get(v,i,j);
    33     for(int a=0; a<n; a++){
    34         for(int b=0; b<3; b++){
    35             get(v2,a,b);
    36             if(v[0]>v2[0] && v[1]>v2[1])
    37                 d[i][j] = max(d[i][j],dp(a,b));
    38         }
    39     }
    40     d[i][j] += block[i][j];
    41     return d[i][j];
    42 }
    43 
    44 int main(){
    45     int cas = 0;
    46     while(scanf("%d",&n) && n){
    47         for(int i=0; i<n; i++){
    48             scanf("%d%d%d",&block[i][0],&block[i][1],&block[i][2]);
    49             sort(block[i],block[i]+3);
    50         }
    51 
    52         int ans = -INF;
    53         memset(d,-1,sizeof(d));
    54         for(int i=0; i<n; i++)
    55             for(int j=0; j<3; j++)
    56                 ans = max(ans,dp(i,j));
    57         printf("Case %d: maximum height = %d
    ",++cas,ans);
    58     }
    59 
    60     return 0;
    61 }
  • 相关阅读:
    作业12-流与文件
    作业11-多线程
    作业10-异常
    作业09-集合与泛型
    作业08-集合
    maven引入本地jar包的方法
    git删除.idea 忽略上传.idea
    JAVA中如何实现序列化,有什么意义?
    win10系统端口被占用怎么查看
    SpringBoot(一) 添加定时任务
  • 原文地址:https://www.cnblogs.com/yxg123123/p/6827594.html
Copyright © 2011-2022 走看看