C - 装箱问题 c++代码详细讲解
Sample Input
0 0 4 0 0 1
7 5 1 0 0 0
0 0 0 0 0 0
Sample Output
2
1
解题思路:
因为高一定,题目无需考虑体积,只需考虑面积。
6 * 6的货物只能单独装在一个6 * 6的包裹中。
5 * 5的货物只能单独装在一个6 * 6的包裹中。但还剩下11个1 * 1的空间。
4 * 4的货物只能单独装在一个6 * 6的包裹中。但还剩下5个2 * 2的空间。
3 * 3的货物就有多种不同的放法,但每4个3 * 3的货物必定放在1个6 * 6的包裹中。
2 * 2和1 * 1的货物只需要找包裹剩下的空间是否能容纳这些货物,倘若不能再拿6 * 6的包裹封装剩余的1 * 1和2 * 2的货物,直到货物全部装箱。这两种放在最后见缝插针最有效。
程序设计:
- 我们比价容易想到的是程序用的是贪心的算法,就是把尽可能多的不同规格的货物存到同一个包裹中,这时候,我们就需要考虑6 * 6,5 * 5,4 * 4,的货物有多少件,因为他们都自成一个包裹,6 * 6的包裹中不可能放得下两个4 * 4的货物对吧&#