百練1017 裝箱問題

2021-08-15 22:08:52 字數 1901 閱讀 2114

總時間限制: 

1000ms

記憶體限制: 

65536kb 描述

乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1*1, 2*2, 3*3, 4*4, 5*5, 6*6。這些產品通常使用乙個 6*6*h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的包裹數量。他們很需要有乙個好的程式幫他們解決這個問題從而節省費用。現在這個程式由你來設計。

輸入輸入檔案包括幾行,每一行代表乙個訂單。每個訂單裡的一行包括六個整數,中間用空格隔開,分別為1*1至6*6這六種產品的數量。輸入檔案將以6個0組成的一行結尾。

輸出除了輸入的最後一行6個0以外,輸入檔案裡每一行對應著輸出檔案的一行,每一行輸出乙個整數代表對應的訂單所需的最小包裹數。

樣例輸入

0 0 4 0 0 1 

7 5 1 0 0 0

0 0 0 0 0 0

樣例輸出

2 

1

解題思路

貪心演算法,總是先放體積大的零件

65,1

4,2,1                    // 注意!易錯

3,2,1

2,11

**

#include#includeusing namespace std;

int pack(int *order);

int main()

/* main loop */

while(!(order[0]==0 && order[1]==0 && order[2]==0 && order[3]==0 && order[4]==0 && order[5]==0))

}/* print result */

for (iter=package.begin(); iter!=package.end(); iter++)

return 0;

}int pack(int *order)

else

// pack 4*4

result += order[3];

if(num2 > order[3]*5)

else

else

num2 = 0;

/* ---------------- attention (end)  ----------------- */

}// pack 3*3

result += order[2]/4;

switch(num3)

else

}else

else

num2 = 0;

}result ++;

break;

}case 2:

else

}else

else

num2 = 0;

}result ++;

break;

}case 3:

else

}else

else

num2 = 0;

}result ++;

break;

}default: break;

}// pack remaining 2*2

result += num2/9;

num22 = num2%9;

if(num22 > 0)

else

}// pack remaining 1*1

result += num1/36;

if(num1%36>0)

return result;

}

POJ 百練 1017 裝箱問題

問題描述 乙個工廠製造的產品形狀都是長方體,它們的高度都是 h,長和寬都相等,一共有六個 型號,他們的長寬分別為 1 1,2 2,3 3,4 4,5 5,6 6.這些產品通常使用乙個 6 6 h 的長方 體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的 包裹數量。他們...

POJ 百練 1017 裝箱問題

問題描述 乙個工廠製造的產品形狀都是長方體,它們的高度都是 h,長和寬都相等,一共有六個 型號,他們的長寬分別為 1 1,2 2,3 3,4 4,5 5,6 6.這些產品通常使用乙個 6 6 h 的長方 體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的 包裹數量。他們...

1017 裝箱問題 百煉oj

include includeconst int len 6 using namespace std int main if sum 0 break int res num 5 num 4 num 3 num 2 3 4 int need2 0 if num 2 4 1 need2 5 else i...