POJ 1017 Packets
原题
工厂生产的产品均为方形包装,包装高度为h,尺寸为1*1、2*2、3*3、4*4、5*5、6*6。这些产品总是以与产品高度h相同,尺寸为6*6的方形包裹寄给客户。由于费用,这是利益的工厂和客户的利益,以减少包裹的数量,从工厂交付订购的产品给客户。一个好的程序解决了寻找最小数量的包裹的问题,根据订单交付给定的产品将节省大量的钱。你被要求编写这样一个程序。
Input文件由指定订单的几行代码组成。每一行指定一个顺序。订单由6个整数描述,中间用一个空格隔开,依次表示从最小的11到最大的66的单个大小的包的数量。输入文件的末尾由包含6个零的行表示。
输出文件包含输入文件中每一行的一行。这一行包含最小数量的包裹,来自输入文件的相应行中的订单可以打包到这些包裹中。输出文件中没有与输入文件的最后一行’’ null’'相对应的行。
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的包装盒中,因为高度都相等所以可以看作二维问题,问最少要多少个包装盒。
思路:首先456的每一个产品都需要一个包装盒,3的产品每四个装满一个包装盒,然后将剩余12的产品依次放入之前包装盒的空余部分。具体见代码。
有些繁琐,分享一个别的题解:https://blog.csdn.net/Windows_Defender/article/details/84996657
#include<iostream>
using namespace std;
int main() {
int _size[7] = {
0};//记录各个尺寸产品的数量
while(true) {
bool bl = false;