动态规划入门——国王的金矿python实现

最近在看《漫画算法》学习到了很多的算法知识,但是里面代码是java实现的,所以在这里想写一版python实现的代码,一是加深一下印象,二是希望对有需要的小伙伴们有所帮助

表格如下:

1个工人2个工人3个工人4 个工人5个工人6个工人7个工人8个工人9个工人10个工人
400kg/50000400400400400400400
500kg/50000500500500500500500
200kg/300200200500500500700700900
300kg/400200300500500500700800900
350kg/300350350500550650850850900

python代码:

import copy

def bestWay(w,p=[],g=[]):
	n = len(g)#金矿数
	res=[0]*(w+1)#存放上一行表格
	arr=[0]*(w+1)#存放当前结果
	#此处列表长度为w+1,为了防止j-p[i]的值为-1取到后面的值
	for i in range(n):
		for j in range(w,1,-1):
			if j >= p[i]:
				arr = max(res[i],res[j-p[i]]+g[i])
		res = copy.deepcopy(arr)
	return res[w]

if __name__ = '__main__':
	res = bestWay(10,[400,500,200,300,350],[5,5,3,4,3])
	print[res]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值