背包模板题。
山洞里面的钻石数量庞大,但品质参差不齐,已知每个钻石的重量 wi 和价值 vi 。你随身携带的布袋承重量上限是 L , 由于你身上没有可以切割钻石的工具,因此只能将完整的钻石装入布袋。
编程求最多能带走总价值多少的钻石?
#include<bits/stdc++.h>
using namespace std;
long long n,l;
long long dp[11451][11451],w[114514],v[114514];
int main(){
cin>>n;
cin>>l;
for(int i=1;i<=n;i++)cin>>w[i]>>v[i];
for(int i=1;i<=n;i++){
if(j>=w[i])
dp[1][i]=w[1];
}
for(int j=1;j<=l;j++){
if(w[i]>j)
dp[i][j]=dp[i-1][j]
else
dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);
}
}
cout<<dp[n][l];
return 0;
}