统筹规划题:“服装店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]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值