繼--揹包訓練 01揹包專欄

1. RQNOJ 2ide

狀態方程:dp[j]=max(dp[j],dp[j-v[i]]+v[i]*w[i]);spa

 1 #include<cstdio>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int v[30],w[30],dp[30005];
 6 int main()
 7 {
 8     int money,num,i,j,k;
 9     while(scanf("%d%d",&money,&num)!=EOF)
10     {
11         for(i=0; i<num; i++)
12             scanf("%d%d",&v[i],&w[i]);
13         memset(dp,0,sizeof(dp));
14         for(i=0; i<num; i++)
15             for(j=money; j>=v[i]; j--)
16             {
17                 dp[j]=max(dp[j],dp[j-v[i]]+v[i]*w[i]);
18             }
19         printf("%d\n",dp[money]);
20     }
21     return 0;
22 }
View Code
相關文章
相關標籤/搜索