@[kakaluo_te](/user/866969) 可以给下详细解释吗?
by u822844 @ 2022-11-22 08:43:36
你的数组一定都要放在外面定义,否则会出现没有初始化为0的情况。
by muyangli @ 2022-11-22 19:27:17
```cpp
#include <stdio.h>
int dp[200][200] = {0};//动态规划 前i个草药 在最大时间j下的最大价值
int v[200]={0};//价值
int w[200]={0};//耗时
int max(int a, int b);
int main() {
int t;
int m;
scanf("%d%d", &t, &m);
for (int i = 1; i <= m; i++)
{
scanf("%d%d", &w[i], &v[i]);
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= t; j++) {
if (w[i] > j) dp[i][j] = dp[i - 1][j];
else dp[i][j] = max(dp[i - 1][j], dp[i-1][j - w[i]] + v[i]);
}
}
printf("%d",dp[m][t]);
return 0;
}
int max(int a, int b) {
return a > b ? a : b;
}
```
by muyangli @ 2022-11-22 20:58:20
@[muyangli](/user/720023) 感谢大佬
by telankesi @ 2022-11-23 16:41:36