#include<bits/stdc++.h>
using namespace std;
int t,m;
int w[110],c[110];
int f[110][1010];
int main(){
scanf("%d%d",&t,&m);
for(int i = 1; i <= m ; i ++){
scanf("%d%d",&w[i],&c[i]);
}
for(int i = 1; i <= m ; i ++){
for(int j = t; j >= 1; j --){
if(w[i] <= j){
f[i][j] = max(f[i-1][j],f[i-1][j-w[i]]+c[i]);
}
else f[i][j] = f[i-1][j];
}
}
cout<<f[m][t]<<endl;
return 0;
}
为什么第二层for循环里面 j 从 t 到 1 而不是 j 从 1 到 j ?
求大佬指教Orz