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

2018.02.06(背包专卖店)

时间:2018-02-06 18:08:01      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:lap   分组   pre   body   opened   img   dea   pen   2.0   

2018.02.06

背包专卖店系列

    今天我们学习了背包问题,浏览了一个规模宏大的背包专卖店。。。领略了许许多多的背包。

01背包

完全背包

多重背包

混合背包

部分背包

二维费用背包

分组背包

有依赖背包

1. 01背包

思路:。。。

核心代码:

技术分享图片
 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int w[101],c[101];
 5 int f[101][1001];
 6 int _Max(int x,int y){return x>y?x:y;}
 7 int main(){
 8     int n,m;
 9     int i,j,v;
10     scanf("%d%d",&m,&n);
11     for(i=1;i<=n;i++)
12         scanf("%d%d",&w[i],&c[i]);
13     for(i=1;i<=n;i++)
14         for(v=m;v>0;v--)
15             if(w[i]<=v) f[i][v]=_Max(f[i-1][v],f[i-1][v-w[i]]+c[i]);
16             else f[i][v]=f[i-1][v];
17     printf("%d\n",f[n][m]);
18     return 0;
19 }
View Code

状态:AC

2.完全背包

思路:。。。

核心代码:

技术分享图片
 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int m,n;
 5 int w[31],c[31];
 6 int f[31][201];
 7 int main(){
 8     int i,j,v;
 9     scanf("%d%d",&m,&n);
10     for(i=1;i<=n;i++)
11         scanf("%d%d",&w[i],&c[i]);
12     for(i=1;i<=n;i++){
13         for(v=1;v<=m;v++){
14             if(v<w[i])
15                 f[i][v]=f[i-1][v];
16             else if(f[i-1][v]>f[i][v-w[i]]+c[i])
17                 f[i][v]=f[i-1][v];
18             else f[i][v]=f[i][v-w[i]]+c[i];
19         }
20     }
21     printf("%d",f[n][m]);
22     return 0;
23 } 
View Code

状态:AC

3.多重背包

思路:。。。

核心代码:

技术分享图片
 1 #include <stdio.h>
 2 #include <math.h>
 3 #include <string.h>
 4 int v[6002],w[6002],s[6002];
 5 int f[6002];
 6 int m,n;
 7 int _Max(int x,int y){return x>y?x:y;}
 8 int main(){
 9     int i,j;
10     scanf("%d%d",&n,&m);
11     for(i=1;i<=n;i++)
12         scanf("%d%d%d",&v[i],&w[i],&s[i]);
13     for(i=1;i<=n;i++){
14         for(j=m;j>=0;j--)
15             for(int k=0;k<=s[i];k++){
16                 if(j-k*v[i]<0)break;
17                 f[j]=_Max(f[j],f[j-k*v[i]]+k*w[i]);
18             }
19     }
20     printf("%d",f[m]);
21     return 0;
22 } 
View Code

状态:AC

2018.02.06(背包专卖店)

标签:lap   分组   pre   body   opened   img   dea   pen   2.0   

原文地址:https://www.cnblogs.com/yzyl-Leo-wey/p/8423157.html

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