这道题就是完全背包模板
一维的完全背包
i 1 m
j t[i] n
dp[j]=max(dp[j],dp[j-t[i]]+w[i]);
二维的完全背包
一维背包比较省空间 111
//完全背包
#include<bits/stdc++.h>
using namespace std;
int t[1001],w[1001];
int dp[1001];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>t[i]>>w[i];
}
memset(dp,0,sizeof(dp));
for(int i=1;i<=m;i++)
for(int j=t[i];j<=n;j++)
dp[j]=max(dp[j],dp[j-t[i]]+w[i]);
cout<<dp[n]<<endl;
return 0;
}