• 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 }
  • 相关阅读:
    git初学
    Android中activity的四个启动模式
    onsaveInstanceState有关问题
    default activity not found的问题
    实现随手指移动
    入园第一天
    玩转Django2.0---Django笔记建站基础八(admin后台系统)
    玩转Django2.0---Django笔记建站基础七(表单与模型)
    玩转Django2.0---Django笔记建站基础六(模型与数据库)
    玩转Django2.0---Django笔记建站基础五(模板)
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6341535.html
Copyright © 2020-2023  润新知