上述代码中,双重循环里循环变量i的枚举顺序改为从w[i]到m,输出结果一定不变。()
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int w[35000], d[35000], dp[35000];
int main() {
int n, m;
scanf("%d%d", &n, &m);
for ( int i = 1; i <= n; i++)
scanf("%d%d", &w[i], &d[i]);
for ( int i = 1; i <= n; i++)
for ( int j = m; j >= w[i]; j--)
{
dp[j] = max( dp[j], dp[j-w[i]]+d[i] );
}
printf("%d\n", dp[m]);
return 0;
}
正确
错误