1 条题解
-
0
#include <bits/stdc++.h> using namespace std; struct Node { int a, b, h; // a长,b宽,h高 (a > b) } a[100]; bool cmp(Node a, Node b) { return a.a > b.a || a.a == b.a && a.b > b.b; } int n, f[100]; int main() { for (int cas = 1; ; cas++) { scanf("%d", &n); if (!n) break; for (int i = 1; i <= n; i++) { scanf("%d%d%d", &a[i].a, &a[i].b, &a[i].h); a[i+n] = {a[i].b, a[i].h, a[i].a}; a[i+2*n] = {a[i].h, a[i].a, a[i].b}; } n *= 3; for (int i = 1; i <= n; i++) if (a[i].a < a[i].b) swap(a[i].a, a[i].b); sort(a+1, a+n+1, cmp); int ans = 0; for (int i = 1; i <= n; i++) { f[i] = a[i].h; for (int j = 1; j < i; j++) if (a[j].a > a[i].a && a[j].b > a[i].b) f[i] = max(f[i], f[j] + a[i].h); ans = max(ans, f[i]); } printf("Case %d: maximum height = %d\n", cas, ans); } return 0; }
- 1
信息
- ID
- 18
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 11
- 已通过
- 5
- 上传者