【题解】POJ 1017 Packets(贪心)

这是一个关于POJ 1017题目的解题报告,题目要求将不同尺寸的产品(1*1至6*6)放入6*6的包装盒中,以最少的包裹数量进行配送。解题思路是利用贪心策略,优先考虑4*4, 5*5, 6*6的产品,3*3的产品则尽可能填满包装盒,再将1*1和2*2的产品放入剩余空间。" 110314963,10293889,Micropython实现多任务详解,"['Python', '多任务处理', '并发编程', 'multiprocessing', '进程通讯']
摘要由CSDN通过智能技术生成

POJ 1017 Packets


原题

https://vjudge.net/problem/POJ-1017

工厂生产的产品均为方形包装,包装高度为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;
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值