你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

装箱问题-分支

2021/12/22 16:37:48

描述

一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有6个型号,它们的长宽分别为1×1,2×2,3×3,4×4,5×5,6×6。这些产品通常使用一个6×6×h的长方体包裹包装,然后邮寄给客户。因为邮费很贵,所以工厂要想方设法地减少每个订单运送时的包裹数量。他们很需要有一个好的程序以解决这个问题从而节省费用。现在这个程序由你来设计。

输入
每个订单信息用包括6个整数的一行数据表示,中间用空格隔开,分别为1×1至6×6这6种产品的数量。

输出
输出一个整数代表对应的订单所需的最小包裹数。

输入样例 1

0 0 4 0 0 1

输出样例 1

2

#include<stdio.h>

int main(){
	int a,b,c,s,t,w;
	scanf("%d %d %d %d %d %d",&a,&b,&c,&s,&t,&w);
	int sum = 0;
	int x,y; 		//装2x2和1x1的箱子个数 
	int p[4] = {0,5,3,1}; 		//3x3的箱子装完剩下空隙能装多少2x2的箱子 
	sum = w+t+s+(c+3)/4;
	x = 5*s+p[c%4];
	if(x<b){
		sum += ((b-x+8)/9); 		 //6x6箱子可以装9个2x2箱子 
	}
	y = 36*sum - w*36 - 25*t - 16*s - 9*c - 2*b;
	if(y<a){
		sum += ((a-y+35)/36);
	}
	printf("%d",sum);
}