动态规划解决投资问题

问题描述

假设有4个工厂,投入总计60万元,如何分配各工厂的资金数,使得总的利润最大。
各工厂跟据投资数额获得的投资回报的表格如下:
在这里插入图片描述
解题思路:
老大让老二去统计给老二[10,60]后,老二的最大收益,然后根据老二所能获得的最大利润和自己对比,便能得到总最大利润。

而老二则延续老大的做法,老二让老三去统计给老三[10,60]后老三能取得的最大利润,然后根据老三所能获得的最大利润和自己相加对比,便能得到总最大利润,将此利润上报给老大。

老三则延续老二的做法,向老四进行统计,上传给老三。

而老四只需要将资金的收益上报给老三即可。

代码(python)

#将各工厂投资0-60万的收益放进一个二维数组
values = [
    [0, 20, 50, 65, 80, 85, 85],
    [0, 20, 40, 50, 55, 60, 65],
    [0, 25, 60, 85, 100, 110, 115],
    [0, 25, 40, 50, 60, 65, 70]
]
pre_max = values[3]

for k in range(len(values)-1, -1, -1):
	#k代表第几个工厂,k是二维数组的下标
    new_pre_max = [0]
    
    for i in range(10, 61, 10):
        #i代表k手中有i万元
        value_list = []
        for j in range(0, i + 1, 10):
            value_list.append(pre_max[int(j/10)] + values[k-1][int((i-j) / 10)])
        new_pre_max.append(max(value_list))

    pre_max = new_pre_max
print(max(pre_max))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值