码迷,mamicode.com
首页 > 其他好文 > 详细

Juice 完全背包 & Bone Collector 0-1背包问题

时间:2018-01-16 13:48:18      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:--   ase   setbuf   log   数组   最大   stdin   0-1背包   最小值   

以下题目还没有找到题目描述,先附上代码。

 

//Juice完全背包,求的是最小值

要在初始化时将临时数组f赋值为最大值,并f[0]=0;这样改变下循环判断条件

最后如果不能完全匹配,也就是f[最大值]不变,便输出不可能。

 1 #include <stdio.h>
 2 #define min(a,b) a<b?a:b
 3 int T,N,E,F;
 4 int cost[10005],powderP[505],powderW[505];
 5 
 6 int main(void){
 7     freopen("input.txt", "r", stdin);
 8     setbuf(stdout, NULL);
 9     scanf("%d", &T);
10     for(int test_case = 1; test_case <= T; test_case++){
11         scanf("%d %d %d", &E, &F, &N);
12         for(int j=1;j<=F-E;j++)
13             cost[j]=0x3FFFFFFF;
14         cost[0]=0;
15         for(int i=0;i<N;i++)
16             scanf("%d %d", &powderP[i], &powderW[i]);
17         for(int i=0;i<N;i++){
18             for(int j=powderW[i];j<=F-E;j++){
19                 cost[j]=min(cost[j],cost[j-powderW[i]]+powderP[i]);
20             }
21         }
22         if(cost[F-E]==0x3FFFFFFF)
23             printf("Case #%d\nimpossible\n", test_case, cost[F-E]);
24         else
25             printf("Case #%d\n%d\n", test_case, cost[F-E]);
26     }
27     return 0;
28 }

 

//Bone_Collector 0-1背包问题

 1 #include <stdio.h>
 2 #define max(a,b) (a>b?a:b)
 3 int T,N,W,boneV[1005],boneW[1005];
 4 int data[1005];//data[V][W]
 5 
 6 int main(void){
 7     scanf("%d", &T);
 8     for(int test_case = 1; test_case <= T; test_case++){
 9         scanf("%d %d", &N, &W);
10         for(int i=1;i<=W;i++)data[i]=0;
11         for(int i=0;i<N;i++)scanf("%d", &boneW[i]);
12         for(int i=0;i<N;i++)scanf("%d", &boneV[i]);
13 
14         for(int j=0;j<N;j++){
15             for(int i=W;i>0;i--){
16                 if(i<boneV[j])break;
17                 if(data[i]<data[i-boneV[j]]+boneW[j])
18                     data[i]=data[i-boneV[j]]+boneW[j];
19             }
20         }
21         printf("#%d %d\n", test_case, data[W]);
22     }
23     return 0;
24 }

 

Juice 完全背包 & Bone Collector 0-1背包问题

标签:--   ase   setbuf   log   数组   最大   stdin   0-1背包   最小值   

原文地址:https://www.cnblogs.com/proscientist/p/8295891.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!