POJ 1276 Cash Machine (完全背包问题)

题意:给出一个价值sum,然后给出n,代表n个方案,接着n对代表个数与价值,要求最接近sum,但不超过sum的价值。

;int dp[100010];int main(){int sum ,i ,j ,k ,n;while(~scanf(“%d%d”,&sum,&n)){int m[20],v[20];for(i=1;i<=n;i++)cin>>m[i]>>v[i];if(sum==0){cout<<0<<endl;continue;}if(n==0){cout<<0<<endl;continue;}memset(dp,0,sizeof(dp));dp[0]=1;int MAX=0,tem;for(i=1;i<=n;i++)for(j=MAX;j>=0;j–)if(dp[j])for(k=1;k<=m[i];k++){tem=j+k*v[i];if(tem>sum)continue;dp[tem]=1;if(tem>MAX)MAX=tem;}cout<<MAX<<endl;}return 0;}

,偶尔会想,如果人生真如一场电子游戏,

POJ 1276 Cash Machine (完全背包问题)

相关文章:

你感兴趣的文章:

标签云: