题目链接:http://poj.org/problem?id=2063
题目大意:给你本金和利息, 要求m年后最多本加息共多少钱?
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 #include <cstdlib> 6 #include <cmath> 7 #include <set> 8 #include <map> 9 #include <vector> 10 using namespace std; 11 12 int max(int a, int b) 13 { 14 return a > b ? a : b; 15 } 16 int dp[100000]; 17 int main() 18 { 19 int t, i, j, k, n, m, d, v[20], p[20]; 20 scanf("%d", &t); 21 while(t--) 22 { 23 scanf("%d %d %d", &n, &m, &d); 24 for(i = 1; i <= d; i++){ 25 scanf("%d %d", v + i, p + i); 26 v[i] /= 1000; //题目有说存的钱一定是千的倍数 27 } 28 for(i = 1; i <= m; i++) 29 { 30 int s = n / 1000; 31 memset(dp, 0, sizeof(dp)); 32 for(j = 1; j <= d; j++) 33 { 34 for(k = v[j]; k <= s; k++) 35 dp[k] = max(dp[k], dp[k - v[j]] + p[j]); 36 } 37 n += dp[s]; 38 //cout << n << endl; 39 } 40 printf("%d ", n); 41 } 42 return 0; 43 }