#include#define maxn 10050 #define maxn1 105 using namespace std; int dp[maxn1][1005]; int ti[maxn],value[maxn]; int main() { int t,m; scanf("%d%d",&t,&m); for(int i=0;i<105;i++){ dp[i][0]=0; dp[0][i]=0; } for(int i=1;i<=m;i++){ scanf("%d%d",&ti[i],&value[i]); } for(int i=1;i<=m;i++){ for(int j=t;j>=0;j--){ if(j>=ti[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-ti[i]]+value[i]); else dp[i][j]=dp[i-1][j]; } } printf("%d",dp[m][t]); return 0; }
最简单的dp
核心代码处理一下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)