朴素2维无优化写法:
#include<bits/stdc++.h> using namespace std; const int maxn=1e3+5; int dp[maxn][maxn],v[maxn],w[maxn]; int main(){ int n,m;scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%d",&v[i],&w[i]); for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++){ dp[i][j]=dp[i-1][j]; if(j>=v[i]) dp[i][j]=max(dp[i][j],dp[i-1][j-v[i]]+w[i]); } } printf("%d\n",dp[n][m]); }
原文:https://www.cnblogs.com/Anonytt/p/14341936.html