若输入数据中,1<=n,m,w[i],d[i]<=3000,则所求答案一定没有溢出。()
#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;
}
正确
错误