题意:对于给定的n中类型的长方体,怎么样堆起来才能有最大的高度;
约束条件。下面的长方体的上表面要大于上面得下表面,切不能有一条边是长度相同
题目说任意类型的长方体的数量是无限的,其实最多用的到的也就3块
另外假设长方体规格是 a x b x c
if(a==b==c)
then 取axbxc的一块
if(a==b!=c)
then 取 axbxc 一块 取axcxb一块
if(a!=b==c)
同上
其余情况即三边都不相等
取axbxc, axcxb, bxcxa
题目说n最大30,所以数组最大需要3x30
struct Node{
int x, y, z;
}aa[100];
对了,上面说到的规格都是大的一边在前的,第三个字母代表高度
剩下的就是排序了,
按照长边降序排序,
如果长边相等,按照短边降序排序
。。。
最后就是求最大值了
本文介绍了一种解决长方体堆叠问题的算法,旨在通过合理的排列组合找到能够达到最大高度的堆叠方式。文章详细阐述了不同情况下长方体的处理方法,并通过排序和动态规划求解最优解。
393

被折叠的 条评论
为什么被折叠?



