總時間限制:
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 17 5 1 0 0 0
0 0 0 0 0 0
樣例輸出
21
解題思路
貪心演算法,總是先放體積大的零件**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...