动态规划:背包问题 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int dp[26][30000]; int main(void) { int money , n , i , j , val[26] , im[26] ; cin >> money >> n ; for(i=1;i<=n;i++) cin >> val[i] >> im[i] ; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=0;j<=money ; j++ ) { if( j >= val[i] ) dp[i][j]=max(dp[i-1][j] , dp[i-1][j-val[i]]+ im[i]*val[i] ); else dp[i][j] = dp[i-1][j]; } } cout << dp[n][money]; return 0; }
0.0分
2 人评分