#include<iostream>#include<cstring>using namespace std;#define max(a,b) (a>b?a:b) int main(){ int s,n,i,j; int v[101],p[101],c[1001]; while(cin>>s>>n) { memset(c,0,sizeof(c)); for(i=1;i<=n;++i) { cin>>p[i]>>v[i]; for(j=s;j>=p[i];--j) c[j]=max(c[j-p[i]]+v[i],c[j]); } cout<<c[s]<<endl; } return 0;}/************************************************************** Problem: 1152 User: 3011216016 Language: C++ Result: Accepted Time:10 ms Memory:1520 kb****************************************************************/
动态规划。。。。