没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-06-16 11:01:00.000|阅读 487 次
概述:本文主要介绍用Java实现集装箱问题的方法。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
问题:
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6.这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。
Input
输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为1*1至6*6这六种产品的数量。输入文件将以6个0组成的一行结尾。
Output
除了输入的最后一行6个0以外,输入文件里每一行对应着输出文件的一行,每一行输出一个整数代表对应的订单所需的最小包裹数。
对于6*6的一个箱子来说,最多只能放一个6*6或一个5*5或4*4的盒子,所以我们初始化需要的箱子数时就是这这几种箱子的个数和,对于3*3的箱子来说,我们可以放一个或2个或3个或4个,这我们可以通过整除和取模来确定放了3*3盒子的箱子数,再把它加入到总箱子数中,接下来我们就是把1*1和2*2的盒子塞进前面所需的箱子中,当塞不完时再来新增盒子,我们首先要将前面的箱子剩余的空间统计出来,并且要以2*2的优先考虑,因为我们可以把多余的2*2的位置变为填充4个1*1的,毕竟1*1的只要有空间随处都可以塞。所以当我们的箱子要是装了1个5*5的盒子的话,那么它就只能塞1*1的了,一个可以塞11个1*1的,对于装了4*4的盒子的话,那么还可以装5个2*2的盒子,暂且不要去转话成1*1的,除非没办法只能装1*1的,对于3*3的话就可以根据取模之后一个箱子剩下的空间了,如果一个箱子中只放了一个3*3的,那么还剩下3个3*3的空间可以放,我们知道可以放5个2*2的和7个1*1的,对于放了2个3*3的箱子,我们剩下的空间可以放3个2*2的以及6个1*1的,对于放了3个3*3的箱子,我们只能放1个2*2的和5个1*1的,这样一来我们就统计出了此时可以放2*2以及1*1的空间到底有多少,接下来我们就放箱子进去啊,放一个就减一个,知道1*1的和2
import java.io.BufferedInputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String args[]){
Scanner sc=new Scanner(new BufferedInputStream(System.in));
boolean flag=true;
Map map=new HashMap();
int k=0;
while(flag){
int n[]=new int[6];
n[0]=sc.nextInt();
n[1]=sc.nextInt();
n[2]=sc.nextInt();
n[3]=sc.nextInt();
n[4]=sc.nextInt();
n[5]=sc.nextInt();
if(n[0]==0&&n[1]==0&&n[2]==0&&n[3]==0&&n[4]==0&&n[5]==0){
flag=false;
}else{
map.put(k, n);
k++;
}
}
for(int i=0;i< map.size();i++){
int[] vs=(int[])map.get(i);
int boxNum=0;
boxNum+=vs[3]+vs[4]+vs[5];
if(vs[2]>0){
if(vs[2]%4==0){
boxNum+=vs[2]/4;
}else{
boxNum+=vs[2]/4+1;
}
}
int for1=vs[4]*11;
int for2=vs[3]*5;
if(vs[2]%4==1){
for1+=7;
for2+=5;
}else if(vs[2]%4==2){
for1+=6;
for2+=3;
}else if(vs[2]%4==3){
for1+=5;
for2+=1;
}
if(vs[0]< for1){
vs[0]=0;
}else{
vs[0]=vs[0]-for1;
}
if(vs[1]< for2){
if(vs[0]>0){
if(4*(for2-vs[1])-vs[0]>=0){
vs[0]=0;
}else{
vs[0]=vs[0]-4*(for2-vs[1]);
}
}
vs[1]=0;
}else{
vs[1]=vs[1]-for2;
}
if(!(vs[0]==0&&vs[1]==0)){
if(vs[1]>0){
if(vs[1]%9==0){
boxNum+=vs[1]/9;
}else{
boxNum+=vs[1]/9+1;
if(vs[0]>(9-(vs[1]%9))*4){
if((vs[0]-(9-(vs[1]%9))*4)%36==0){
boxNum+=(vs[0]-(9-(vs[1]%9))*4)/36;
}else{
boxNum+=(vs[0]-(9-(vs[1]%9))*4)/36+1;
}
}
}
}else if(vs[0]>0){
if(vs[0]%36==0){
boxNum+=vs[0]/36;
}else{
boxNum+=vs[0]/36+1;
}
}
}
System.out.println(boxNum);
}
}
}
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号