把“for(int j=1;j<=T;j++)”改成“for(int j=t;j>=0;j--)”即可AC,但不知道为什么
#include <iostream>
#include <algorithm>
using namespace std;
int T,M;
int w[105];
int v[105];
int dp[1005][105];
int main()
{
cin >> T >> M;
for(int i=1;i<=M;i++)
cin>>w[i]>>v[i];
for(int i=1;i<=M;i++)
{
for(int j=1;j<=T;j++)
{
if(j<w[i]) dp[i][j] = dp[i-1][j];
else dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i]);
}
}
cout << dp[M][T];
return 0;
}