uva 437(最长递减子序列)
来源:互联网 发布:哈萨克软件下载大全 编辑:程序博客网 时间:2024/06/13 00:18
题意:给出有n种长方体的长宽高,假如有无数个这些长方体来摆放,要求如果一个长方体的长和宽都比下面的长方体小,那么就可以垒上去,问最多能垒多高。
题解:将所给出的某种长方体的所有高不同的情况都存储起来,然后按面积降序排列,按最长递减子序列的思想,将某个点当做最高点,更新最高的高度。
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 35;struct Block {int x, y, z;}block[N * 3];int f[N], n, t = 1, a, b, c;int cmp(Block a, Block b) {return a.x * a.y > b.x * b.y;}int main() {while (scanf("%d", &n) && n) {int k = 0;for (int i = 0; i < n; i++) {scanf("%d%d%d", &a, &b, &c);block[k].x = a;block[k].y = b;block[k++].z = c;block[k].x = a;block[k].y = c;block[k++].z = b;block[k].x = b;block[k].y = c;block[k++].z = a;}sort(block, block + k, cmp);int res = -1;for (int i = 0; i < k; i++) {f[i] = block[i].z;for (int j = 0; j < i; j++) {if (block[j].x > block[i].x && block[j].y > block[i].y ||block[j].x > block[i].y && block[j].y > block[i].x)f[i] = f[i] > f[j] + block[i].z ? f[i] : f[j] + block[i].z;}if (f[i] > res)res = f[i];}printf("Case %d: maximum height = %d\n", t++, res);}return 0;}
0 0
- uva 437(最长递减子序列)
- 最长递减子序列
- 最长递减子序列
- 最长递减子序列
- 最长递减子序列
- 最长递减子序列
- Uva 10131 Is Bigger Smarter 最长递减子序列
- pku1887 最长递减子序列
- 最长单调递减子序列
- poj1887(最长递减子序列)
- 最长递减子序列[转载]
- 最长递增/递减子序列
- 求最长递减子序列
- 最长单调递减子序列
- 最长非递减子序列
- 最长递减子序列问题
- 求最长单调递减子序列
- 求最长单调递减子序列
- 社交网站SNS的运用
- uva437
- 大学的上机操作
- 冒泡排序
- SQL Server 有用语句搜集
- uva 437(最长递减子序列)
- Memcached单点问题——实战之复制----基于repcached的主从
- UICollectionView 简单使用 代码创建
- 在独立的文件中定义WPF资源
- Java 反射机制[Method反射]
- 有序数组 2F查找
- final关键字修饰变量的几点思考
- 来自知乎的一篇好文章--为什么阿里系软件体验都不好?
- 简单选择排序