Python--背包问题(动态规划)

我们采用递归的方式来求解这个动态规划问题

代码

1.样例输入代码

# max_weight=int(input())
# weight=input()
# weight = weight.split()
# weight = list(map(int, weight))# 使用 map() 函数和 int() 将子字符串列表转换为整数列表
# values_1=input()
# values_1 = values_1.split()
# values = list(map(int, values_1))

2.完整代码

##背包问题,动态规划,Recursion Solution--递归解法
# max_weight=int(input())
# weight=input()
# weight = weight.split()
# weight = list(map(int, weight))# 使用 map() 函数和 int() 将子字符串列表转换为整数列表
# values_1=input()
# values_1 = values_1.split()
# values = list(map(int, values_1))
weight=[1,2,4,2,5]
values=[5,3,5,3,2]
max_weight=10
# weight=[1,2,3]
# values=[2,4,3]
# max_weight=5
ans=0
if max_weight==0 or len(weight)==0:
    print(0)
def Recursion(f,w_c):
    if f>len(weight)-1:
        return 0
    if weight[f]>w_c:
        ans=Recursion(f+1,w_c)
    else:
        ans=max(Recursion(f+1,w_c),Recursion(f+1,w_c-weight[f])+values[f])
    return ans
print(Recursion(0,max_weight))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值