<pre name="code" class="cpp">#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> using namespace std; const int maxn= 1000+10; int dp[maxn],t[maxn],c[maxn]; int main(){ int i,j,k,m,n; scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ scanf("%d%d",&t[i],&c[i]);//读入时间和药的价值 } for(i=1;i<=m;i++){ for(j=n;j>=t[i];j--){ dp[j]=max(dp[j],dp[j-t[i]]+c[i]);//状态转移方程,跟01背包一毛一样 } //for(j=t[i]-1;j>=0;--j) //dp[i][j]=dp[i-1][j]; //printf("%d",dp[i][j]); } printf("%d",dp[n]); return 0; } /* 70 3 71 100 69 1 1 2 */