hdu 2546 01背包(从一堆物品中尽可能组成接近给定重量的方案)

来源:互联网 发布:一线城市 知乎 编辑:程序博客网 时间:2024/05/19 16:36
#include<cstdio>#include<cstring>#include<algorithm>#define MAX(x,y) ((x)>(y)?(x):(y))#define MIN(x,y) ((x)>(y)?(y):(x))using namespace std;int  dp[1010];int c[1010];int main(){int n,col;while(~scanf("%d",&n)&&n){memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++)scanf("%d",&c[i]);scanf("%d",&col);if(col<5)printf("%d\n",col);else{    sort(c+1,c+1+n);for(int i=1;i<=n-1;i++){for(int j=col-5;j>=c[i];j--){dp[j]=MAX(dp[j],dp[j-c[i]]+c[i]);}}    printf("%d\n",col-c[n]-dp[col-5]);   }}}

0 0
原创粉丝点击