POJ1017

问题描述###

有6种产品,其高度均为h,底面积依次为:
1*1, 2*2, 3*3, 4*4, 5*5, 6*6
运送的盒子为6*6*h
最节省的放到话,需要多少个盒子
输入:
b1 b2 b3 b4 b5 b6为大小为1~6的产品的个数


难点###

只要思路清晰,没什么难点;
下面是Baseline的思路,没去想更加巧妙的解法~
尽量放相同大小的产品
首先,放入6*6,每个6*6耗费1个盒子;
然后,放入5*5,每个5*5耗费1个盒子,<b>每个盒子</b> 还剩余11个11的位置,用于放置11的产品;
然后,放入4*4,每个4*4耗费1个盒子,<b>每个盒子</b> 还剩余5个22的位置,用于放置22的产品;
然后,放入3*3,每4个3*3耗费1个盒子,如果还剩余5个2*2的位置,用于放置2*2的产品;
* 注意:
-- 如果 b3 % 4 == 1: 那么剩余空间可以放5个2*2 + 7个1*1
-- 如果 b3 % 4 == 2: 那么剩余空间可以放3个2*2 + 6个1*1
-- 如果 b3 % 4 == 1: 那么剩余空间可以放1个2*2 + 5个1*1
然后,放入2*2,每9个2*2耗费1个盒子,先使用以前剩余的位置来放置2*2,如果还没放完,那么再用新的盒子;如果放完了,把剩余的位置转化成放置1*1的产品的位置;
最后,放入1*1,每36个1*1耗费1个盒子,先使用以前剩余的位置来放置1*1,如果还没放完,那么再用新的盒子;

代码实现###

`
package poj;
import java.util.Scanner;
public class Poj1017 {
public static void main(String[] args) {
boolean flag = false;
Scanner sc = new Scanner(System.in);
String tmp = sc.nextLine();
String[] ss = tmp.split(" ");
int b1 = Integer.valueOf(ss[0]);
int b2 = Integer.valueOf(ss[1]);
int b3 = Integer.valueOf(ss[2]);
int b4 = Integer.valueOf(ss[3]);
int b5 = Integer.valueOf(ss[4]);
int b6 = Integer.valueOf(ss[5]);
while(b1+b2+b3+b4+b5+b6 != 0){
int cost = 0;
int c1 = 0;
int c2 = 0;
/* size: 66 /
cost += b6;
print(flag, cost, c2, c1);
/
size: 5
5 /
cost += b5;
/
65 - 55 =
* 11 * 11
* /
c1 += 11 * b5;
print(flag, cost, c2, c1);
/
size: 4
4 /
cost += b4;
/
66 - 44 =
* 5 * 44 or
* 20 * 1
1
* /
c2 += 5 * b4;
print(flag, cost, c2, c1);
/
size 33 /
if(b3 % 4 == 0){
cost += b3/4;
}else if(b3 % 4 == 1){
int u3 = b3/4 + 1;
cost += u3;
/
6
6 - 33 =
* 5 * 2
2 + 7 * 11 or
* 27 * 1
1
/
c2 += 5;
c1 += 7;
}else if(b3 % 4 == 2){
int u3 = b3/4 + 1;
cost += u3;
/
66 - 2 * 33 =
* 3 * 22 + 6 * 11 or
* 18 * 11
/
c2 += 3;
c1 += 6;
}else{
int u3 = b3/4 + 1;
cost += u3;
/
6
6 - 3 * 33 =
* 1 * 2
2 + 5 * 11 or
* 9 * 1
1
/
c2 += 1;
c1 += 5;
}
print(flag, cost, c2, c1);
/
size: 22 /
if(b2 >= c2){
b2 = b2 - c2;
c2 = 0;
if(b2 % 9 == 0){
cost += b2/9;
}else{
cost += b2/9;
cost ++;
c1 += 4 * (9 - b2%9);
}
}else{
c2 = c2 - b2;
}
print(flag, cost, c2, c1);
/
size: 1
1 /
c1 += c2 * 4;
if(b1 >= c1){
b1 = b1 - c1;
c1 = 0;
if(b1%36 == 0){
cost += b1/36;
}else{
cost += b1/36;
cost ++;
}
}
print(flag, cost, c2, c1);
System.out.println(cost);
/
next case /
tmp = sc.nextLine();
ss = tmp.split(" ");
b1 = Integer.valueOf(ss[0]);
b2 = Integer.valueOf(ss[1]);
b3 = Integer.valueOf(ss[2]);
b4 = Integer.valueOf(ss[3]);
b5 = Integer.valueOf(ss[4]);
b6 = Integer.valueOf(ss[5]);
}
sc.close();
}
public static void print(boolean flag,int cost, int c2, int c1){
if(flag == true)
System.out.println(cost+" "+c2+" "+c1);
}
}
/

0 0 4 0 0 1
7 5 1 0 0 0
36 9 4 1 1 1
0 9 4 1 1 0
0 0 4 0 0 0
36 0 0 0 0 0
0 9 0 0 0 0
79 96 94 30 18 14
53 17 12 98 76 54
83 44 47 42 80 3
15 26 13 29 42 40
41 61 36 90 54 66
78 56 445 45 23 65
13 4 8 29 45 3
15 75 45 98 34 53
40 9 0 2 0 0
41 9 0 2 0 0
44 0 0 0 4 0
0 2 3 0 0 0
37 7 2 0 1 0
12 2 0 1 0 0
13 2 0 1 0 0
0 0 0 0 0 0
*/

`

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容