1 solutions
-
2
#include<bits/stdc++.h> using namespace std; int C,H; int v[5005]; int dp[50005]={}; int main(){ cin>>C>>H; for(int i=1;i<=H;i++) cin>>v[i]; for(int i=1;i<=H;i++){ for(int m=C;m>=0;m--){ if(v[i]>m) dp[m]=dp[m]; else dp[m]=max(dp[m],dp[m-v[i]]+v[i]); } } cout<<dp[C]<<"\n"; return 0; }
特殊一点的01背包,价值和重量是同一个
- 1
Information
- ID
- 1030
- Time
- 1500ms
- Memory
- 125MiB
- Difficulty
- 6
- Tags
- # Submissions
- 20
- Accepted
- 12
- Uploaded By