装箱问题(多测试集版本)【分支方法】

这是一个C语言实现的程序,用于解决将不同尺寸的物品装入不同大小箱子的问题。程序通过读取六个整数,分别代表四种尺寸的物品数量,并计算所需的最小箱子数量。算法涉及到向上取整和最佳装箱策略,例如将尺寸2的物品优先装入尺寸4或5的箱子,以减少箱子总数。

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

#include<stdio.h>
int main()
{
	int a1, a2, a3, a4, a5, a6;
	while (scanf("%d %d %d %d %d %d", &a1, &a2, &a3, &a4, &a5, &a6), a1 || a2 || a3 || a4|| a5 || a6)
	{
		int ans;
		int yu1, yu2,n;
		ans = yu1 = yu2 = 0;
		//装尺寸4、5、6的箱
		ans += a6 + a5 + a4;
		yu1 += a5 * 11;
		yu2 += a4 * 5;
		//装尺寸3的箱
		if (a3 > 0)
		{
			n = a3 % 4;
			ans += (a3 - 1) / 4 + 1;//向上取整
			if (n == 1) {
				yu2 += 5;
				yu1 += 7;
			}
			if (n == 2)
			{
				yu2 += 3;
				yu1 += 6;
			}
			if (n == 3)
			{
				yu2++;
				yu1 += 5;
			}
		}
		//装尺寸2的箱
		if (yu2 >= a2)
		{
			yu2 -= a2;
			yu1 += yu2 * 4;
		}
		else
		{
			a2 -= yu2;
			ans += (a2 - 1) / 9 + 1;
			yu1 += (9 - a2 % 9) % 9 * 4;
		}
		//装尺寸1的箱
		if (a1 > yu1)
		{
			a1 -= yu1;
			ans += (a1 - 1) / 36 + 1;
		}
		printf("%d\n",ans);
	}
	return 0;
}

人傻,就多加几个判断了orn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值