HDU 1069 Monkey and Banana

Posted 谦谦君子,陌上其华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1069 Monkey and Banana相关的知识,希望对你有一定的参考价值。

http://acm.hdu.edu.cn/showproblem.php?pid=1069

题意:给出立方体,求出所能搭成的最大高度,要求是上面一块立方体的长和宽必须严格小于下面一块的长和宽。

思路:每输入一个立方体的长宽高数据,长宽高各自排列组合可以形成6个立方体。用sort函数根据立方体的长从小到大进行排序,次要排序条件为宽。

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 
 5 struct node
 6 {
 7     int l, w, h;
 8 }v[181];
 9 
10 int dp[181];  //存储第i块立方体为底时的最大高度
11 
12 bool cmp(node x, node y)  //sort的排序方法,按长从小到大排序
13 {
14     /*
15     if (x.l < y.l)  return 1;
16     else if (x.l == y.l && x.w < y.w)  return 1;
17     else return 0;
18     */
19 
20     if (x.l == y.l)  return x.w < y.w;
21     return x.l < y.l;
22 }
23 
24 
25 int main()
26 {
27     //freopen("D:\\txt.txt", "r", stdin);
28     int n, a, b, c;
29     int kase = 0;
30     while (cin >> n && n)
31     {
32         int k = 0;
33         for (int i = 0; i < n; i++)
34         {
35             cin >> a >> b >> c;
36             v[k].l = a; v[k].w = b; v[k++].h = c;
37             v[k].l = a; v[k].w = c; v[k++].h = b;
38             v[k].l = b; v[k].w = a; v[k++].h = c;
39             v[k].l = b; v[k].w = c; v[k++].h = a;
40             v[k].l = c; v[k].w = a; v[k++].h = b;
41             v[k].l = c; v[k].w = b; v[k++].h = a;
42         }
43         sort(v, v + k, cmp);
44         int maxn = 0;
45         for (int i = 0; i < k; i++)
46         {
47             dp[i]=v[i].h;
48             for (int j = 0; j < i; j++) 
49             {
50                 if (v[j].l < v[i].l && v[j].w < v[i].w) //如果第j块能搭在第i块上
51                 {
52                     dp[i] = max(dp[i], dp[j] + v[i].h); 
53                 }
54             }
55             if (dp[i]>maxn) maxn = dp[i];
56         }
57         cout << "Case " << ++kase << ": maximum height = " << maxn << endl;
58     }
59     return 0;
60 }

 

以上是关于HDU 1069 Monkey and Banana的主要内容,如果未能解决你的问题,请参考以下文章

HDU - 1069 Monkey and Banana

Monkey and Banana HDU - 1069 (基础dp)

[2016-03-30][HDU][1069][Monkey and Banana]

ACM-经典DP之Monkey and Banana——hdu1069

HDU-1069-Monkey and Banana

HDU 1069 Monkey and Banana