9.求解 01 背包问题 - 蓝桥云课 (lanqiao.cn)
import os
import sys
# 请在此输入您的代码
toatal_w,n=map(int,input().split()) #背包容量 物品数量
w=[]
v=[]
for i in range(n):
wi,vi=map(int,input().split())
w.append(wi)
v.append(vi)
dp=[[0 for _ in range(toatal_w+1)] for _ in range(n+1)] #n+1行 ,toal_w+1列 为了下面循环从1开始
for i in range(1,n+1): #第i个物品
for j in range(1,toatal_w+1): #背包容量
if w[i-1]>j:
dp[i][j]=dp[i-1][j] #题目描述此时价值与前i-1个价值一样
else:
dp[i][j]=max(v[i-1]+dp[i-1][j-w[i-1]],dp[i-1][j])
print(dp[n][toatal_w])