打代码不走心会掉坑里的。。
下边是代码:
1 //1146.采药 2 //t表示总时间 3 //m表示草药数 4 //w表示采药时间 5 //v表示草药价值 6 #include <iostream> 7 using namespace std; 8 9 #define MAX(a,b) a>b?a:b 10 11 int MaxValue(int w[], int v[], int m, int t) { 12 int max[m+1][t+1]; 13 for (int i = 0; i <= t; i++) { 14 if (i>=w[1]) max[1][i] = v[1]; //我刚开始把这里的w[1]打成了w[i]。。下次打代码一定要走心。。 15 else max[1][i] = 0; 16 } 17 for (int i = 2; i <= m; i++) { 18 for (int j = 0; j <= t; j++) { 19 if (j<w[i]) max[i][j] = max[i-1][j]; 20 else { 21 max[i][j] = MAX(max[i-1][j], (max[i-1][j-w[i]]+v[i])); 22 } 23 } 24 } 25 return max[m][t]; 26 } 27 28 int main() { 29 int t, m; 30 cin>>t>>m; 31 int w[m+1], v[m+1]; 32 for (int i = 1; i <= m; i++) cin>>w[i]>>v[i]; 33 cout<<MaxValue(w,v,m,t)<<endl; 34 return 0; 35 }