百练1017装箱问题
来源:互联网 发布:中国软件同花顺 编辑:程序博客网 时间:2024/06/05 02:45
装箱问题初看没有头绪,但是细想一下会发现,要是最后使用的打包盒最少,应该先放置体积大的盒子,再用体积小的盒子对打包盒的剩余空间进行填充,这是我解这道题的遵循的原则。
我们把1*1和2*2的盒子看成体积小的用来填充的盒子,且在填充时也应遵循,先填2*2,再填1*1.
对于5*5的盒子,每一个这样的盒子就需要一个打包盒,且里面还能填充11个1*1的盒子
对于4*4的盒子,每一个这样的盒子就需要一个打包盒,且里面还能填充5个2*2的盒子
对于3*3的盒子,需要分情况讨论:(3*3的盒子正好4个可以塞满一个打包盒)
1、3*3盒子个数正好是4的整数倍个,那就直接个数除以4就得到相应的打包盒个数
2、3*3盒子个数除以4余1,剩余的空间还能装5个2*2的盒子和7个1*1的盒子
3、余数是2,剩余空间还能装3个2*2的盒子和6个1*1的盒子
4、余数是3,剩余空间还能装1个2*2的盒子和5个1*1的盒子
余下,2*2的盒子和1*1的盒子也可进行类似讨论
代码如下:
package poj_online;import java.util.Scanner;public class Pockets {public static void main(String args[]){Scanner scan=new Scanner(System.in);while(true){int []a=new int[6];a[0]=scan.nextInt();a[1]=scan.nextInt();a[2]=scan.nextInt();a[3]=scan.nextInt();a[4]=scan.nextInt();a[5]=scan.nextInt();if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0&&a[5]==0)break;int box=function(a);System.out.println(box);}}public static int function(int []a){int b_1=a[0];int b_2=a[1];int b_3=a[2];int b_4=a[3];int b_5=a[4];int b_6=a[5];int sum=b_6;//处理5*5的箱子if(b_5>0){sum+=b_5;if(b_1>=b_5*11)b_1=b_1-b_5*11;elseb_1=0;}//处理4*4的箱子if(b_4>0){sum+=b_4;if(b_2>=5*b_4)b_2=b_2-5*b_4;else{int r_e=20*b_4-4*b_2;b_2=0;if(b_1>=r_e)b_1=b_1-r_e;elseb_1=0;}}//处理3*3的箱子if(b_3>0){sum=sum+b_3/4;if(b_3%4==1){sum++;if(b_2>=5){b_2=b_2-5;if(b_1>=7)b_1=b_1-7;elseb_1=0;}else{int r_e=27-b_2*4;b_2=0;if(b_1>=r_e)b_1=b_1-r_e;elseb_1=0;}}else if(b_3%4==2){sum++;if(b_2>=3){b_2=b_2-3;if(b_1>=6)b_1=b_1-6;elseb_1=0;}else{int r_b=18-4*b_2;b_2=0;if(b_1>=r_b)b_1=b_1-r_b;elseb_1=0;}}else if(b_3%4==3){sum++;if(b_2>=1){b_2=b_2-1;if(b_1>=5)b_1=b_1-5;elseb_1=0;}else{int r_b=9-4*b_2;b_2=0;if(b_1>=r_b)b_1=b_1-r_b;elseb_1=0;}}}if(b_2>0){sum=sum+b_2/9;if(b_2%9!=0){sum++;int r_e=36-4*(b_2%9);if(b_1>=r_e)b_1=b_1-r_e;else b_1=0;}}while(b_1>0){sum++;b_1=b_1-36;}return sum;}}
阅读全文
0 0
- 百练 1017 装箱问题
- 百练1017:装箱问题
- 百练1017装箱问题
- POJ 百练 1017: 装箱问题
- POJ 百练 1017: 装箱问题
- 百练OJ:1017:装箱问题
- 百练:1007 装箱问题
- 百练noi 8785:装箱问题
- poj百炼 1017:装箱问题
- 百炼OJ 1017:装箱问题
- 1017:装箱问题 百炼oj
- poj 1017 装箱问题
- poj 1017装箱问题
- 1017装箱问题
- POJ 1017:装箱问题
- acm 1017 装箱问题
- 百练-约瑟夫问题
- 百练城堡问题
- AJAX的数据传输格式
- 51nod 1811 联通分量计数
- CodeForces
- HDU6061 RXD and functions
- 安卓简单的画板
- 百练1017装箱问题
- HttpRequest的作用
- sql查询10-20行的数据
- jzoj1252. 天平
- cocos2d_js 拼图游戏源码(点击互换版)
- Scanner中sc.next() 和 nextLine 的区别
- 一:51单片机简单IO实验(自测)
- ArrayList
- R ggplot2线性图