一维数组解01背包

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1010;
int c[maxn],w[maxn];
int dp[maxn];
int main(){
    int n,v;
    cin>>n>>v;
    for(int i=1;i<=n;i++) cin>>c[i];
    for(int i=1;i<=n;i++) cin>>w[i];

    for(int i=1;i<=n;i++){
        for(int j=v;j>=c[i];j--){
            dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
        }
    }
    printf("%d
",dp[v]);
    return 0;
}
原文地址:https://www.cnblogs.com/Roni-i/p/8628537.html