POJ 1017 -Packets

本文介绍了一种针对特定尺寸货物的装箱优化算法,通过合理安排不同尺寸的实心货物来减少所需包裹数量,实现成本节约。算法考虑了六种不同尺寸的货物,并给出具体的装箱策略和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述
这里写图片描述
题目链接

题目分析

题意

一个工厂生产相同高度h的货物(实心的),尺寸分别为1* 1,2* 2,3* 3,4* 4,5* 5,6* 6。
将这些货物用高度h、尺寸为6*6的包裹装,考虑费用问题,求最少所需的包裹数量。

思路

1个尺寸为6* 6的包裹可以装:
1个6* 6的货物
1个5* 5的货物和11个1* 1的货物
1个4* 4的货物和5个2* 2的货物
4个3* 3的货物。
1* 1,2* 2的货物先填充其他包裹,并且,其他包裹先填充2* 2的货物,再填充1* 1。若有剩,则再添加包裹。

代码
#include<stdio.h>
int x3[4]={0,5,3,1};//一个包裹里装有0,1,2,33*3尺寸货物时能装有的2*2尺寸货物的数量 
int main(){
    //freopen("TXA.txt","r",stdin);
    int s1,s2,s3,s4,s5,s6;
    while(~scanf("%d%d%d%d%d%d",&s1,&s2,&s3,&s4,&s5,&s6),s1+s2+s3+s4+s5+s6){
        int res=s4+s5+s6+(s3+3)/4;//int3/4 ==0如果s3的数量是1,+3/4刚好得一个整数 
        int x2=s4*5+x3[s3%4];//s3%4==装不满3*3尺寸货物的包裹里面3*3尺寸货物的数量 
        if(s2>x2)
            res+=(s2-x2+8)/9;//+8同上 
        int x1=res*36-s6*36-s5*25-s4*16-s3*9-s2*4;
        if(s1>x1)
            res+=(s1-x1+35)/36;//+35同上 
        printf("%d\n",res);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值