1. 程式人生 > >統籌規劃題:“服裝店4個小組15天最多做多少套衣服褲子”的思路

統籌規劃題:“服裝店4個小組15天最多做多少套衣服褲子”的思路

某服裝店有甲、乙、丙、丁四個縫製小組。甲組每天能縫製5件上衣或6條褲子;乙組每天能縫製6件上衣或7條褲子;丙組每天能縫製7件上衣或8條褲子;丁組每天能縫製8件上衣或9條褲子。每組每天要麼縫製上衣,要麼縫製褲子,不能弄混。訂單要求上衣和褲子必須配套(每套衣服包括一件上衣和一條褲子)。只要做好合理安排,該服裝店15天最多能縫製()套衣服。
A.208
B.209
C.210
D.211

一開始以為這個題簡單兩兩搭配就行:
甲6褲乙6衣、丙8褲丁8衣=(6+8)*15=210

結果發現錯了!答案是211

這個題的參考答案給出的思路是:
先算效率:“衣服產能最大的全部生衣服,生能褲子最大的全部產褲子”


甲乙丙丁衣服褲子生成效率比值分別為5/6、6/7、7/8、8/9.
甲組生成褲子效率最高(5/6),丁組生產衣服效率最高(8/9)
所以甲組15天全產褲子,丁組15天全產衣服。

然後:
乙假設生產衣服x天、褲子15-x天
丙假設生產衣服y天、褲子15-y天

15天衣服褲子的產值為:
衣服:0*5+x*6+y*7+15*8
褲子:15*6+(15-x)*7+(15-y)*8+0*9

因為有必須配套這個條件,所以總計衣服數和褲子數應該正好配套。
也就是說:
衣服數=褲子數
0*5+x*6+y*7+15*8=15*6+(15-x)*7+(15-y)*8+0*9

精簡得:13x+15y=13*15
x,y=0,13或x,y=15,0
帶入分別為211和210。

實際上,即使不考慮必須配套這個條件,只考慮最多能組成多少套。
這一題結論套數依舊是211。
可以用python遍歷驗證一下,發現211就是最大值了,而且恰好能使衣服和褲子數相等。

print('遍歷所有')
total=[0,0,0,0,0,0,0,0]
for x in range(16):
    for y in range(16):
        for z in range(16):
            for u in range(16):
                a = x*5+y*6+z*7+u*8                         # 衣服數
                b = (15
-x)*6+(15-y)*7+(15-z)*8+(15-u)*9 # 褲子數 t = min(a,b) # 衣服褲子組成套數 e = '==' if a==b else '<>' # 正好配套還是存在多餘 if t>total[5]:total = [x,y,z,u,'|',t,e] if t>=210:print(x,y,z,u,'|',t,e) print(total)

可以發現除了 0 15 0 15 | 210 ==(即甲丙15天全是褲子,乙丁15天全是衣服),能出210套以外。
還有其他太多的方法,可以在15天內得到210套服裝。

但是隻有0 0 13 15 | 211 ==這種方法能得到211套。

遍歷所有
0 0 13 15 | 211 ==
0 0 14 14 | 210 <>
0 1 12 15 | 210 <>
0 3 15 11 | 210 <>
0 4 13 12 | 210 <>
0 4 14 11 | 210 <>
0 5 11 13 | 210 <>
0 5 12 12 | 210 <>
0 6 9 14 | 210 <>
0 6 10 13 | 210 <>
0 7 7 15 | 210 <>
0 7 8 14 | 210 <>
0 8 6 15 | 210 <>
0 8 14 8 | 210 ==
0 9 12 9 | 210 ==
0 10 10 10 | 210 ==
0 11 8 11 | 210 ==
0 12 6 12 | 210 ==
0 13 4 13 | 210 ==
0 14 2 14 | 210 ==
0 15 0 15 | 210 ==
1 2 14 12 | 210 <>
1 2 15 11 | 210 <>
1 3 12 13 | 210 <>
1 3 13 12 | 210 <>
1 4 10 14 | 210 <>
1 4 11 13 | 210 <>
1 5 8 15 | 210 <>
1 5 9 14 | 210 <>
1 6 7 15 | 210 <>
1 6 15 8 | 210 ==
1 7 13 9 | 210 ==
1 8 11 10 | 210 ==
1 9 9 11 | 210 ==
1 10 7 12 | 210 ==
1 11 5 13 | 210 ==
1 12 3 14 | 210 ==
1 13 1 15 | 210 ==
2 0 15 12 | 210 <>
2 1 13 13 | 210 <>
2 1 14 12 | 210 <>
2 2 11 14 | 210 <>
2 2 12 13 | 210 <>
2 3 9 15 | 210 <>
2 3 10 14 | 210 <>
2 4 8 15 | 210 <>
2 5 14 9 | 210 ==
2 6 12 10 | 210 ==
2 7 10 11 | 210 ==
2 8 8 12 | 210 ==
2 9 6 13 | 210 ==
2 10 4 14 | 210 ==
2 11 2 15 | 210 ==
3 0 12 14 | 210 <>
3 0 13 13 | 210 <>
3 1 10 15 | 210 <>
3 1 11 14 | 210 <>
3 2 9 15 | 210 <>
3 3 15 9 | 210 ==
3 4 13 10 | 210 ==
3 5 11 11 | 210 ==
3 6 9 12 | 210 ==
3 7 7 13 | 210 ==
3 8 5 14 | 210 ==
3 9 3 15 | 210 ==
4 0 10 15 | 210 <>
4 2 14 10 | 210 ==
4 3 12 11 | 210 ==
4 4 10 12 | 210 ==
4 5 8 13 | 210 ==
4 6 6 14 | 210 ==
4 7 4 15 | 210 ==
5 0 15 10 | 210 ==
5 1 13 11 | 210 ==
5 2 11 12 | 210 ==
5 3 9 13 | 210 ==
5 4 7 14 | 210 ==
5 5 5 15 | 210 ==
6 0 12 12 | 210 ==
6 1 10 13 | 210 ==
6 2 8 14 | 210 ==
6 3 6 15 | 210 ==
7 0 9 14 | 210 ==
7 1 7 15 | 210 ==
[0, 0, 13, 15, '|', 211, '==']
[Finished in 0.3s]