博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
背包模板
阅读量:5250 次
发布时间:2019-06-14

本文共 1144 字,大约阅读时间需要 3 分钟。

1 //每件物品只能使用一次 2 void onezeropack(int v,int c) 3 { 4     int j; 5     for(j=val; j>=v; j--) 6     { 7         f[j]=max(f[j-v]+c,f[j]); 8     } 9 }10 //每件物品可以无限使用11 void completepack(int v,int c)12 {13     int j;14     for(j=v; j<=val; j++)15     {16         f[j]=max(f[j-v]+c,f[j]);17     }18 }19 //每件物品有限次使用20 void multiplepack(int v,int c,int num)21 {22     if(v*num>=val)23     {24         completepack(v,c);25         return;26     }27     int k=1;28     while(k

注意 : 背包的第一重循环要自己写

for(int i = 0 ;i < n ; i++)  

调用其中一个函数

 

f[N]为dp数组

 

 

 

1 #define N 100005   2 int m,f[N];   3 int Max(int a,int b)   4 {   5     return a>b?a:b;   6 }   7 void Zeroone(int c,int w)          // 01背包   8 {   9     int i;  10     for(i=m;i>=c;i--)  11         f[i]=Max(f[i],f[i-c]+w);  12 }  13 void Comple(int c,int w)       //完全背包  14 {  15     int i;  16     for(i=c;i<=m;i++)  17         f[i]=Max(f[i],f[i-c]+w);  18 }  19 void Multi(int c,int w,int num)     //多重背包  20 {  21     if(c*num>=m)  22         Comple(c,w);  23     else  24     {  25         int i=1;           //二进制思想,用一些数表示所有可能的组合。  26         while(i

 

转载于:https://www.cnblogs.com/shanyr/p/4674667.html

你可能感兴趣的文章
九.python面向对象(双下方法内置方法)
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>
多线程《三》进程与线程的区别
查看>>
linux sed命令
查看>>
html标签的嵌套规则
查看>>
[Source] Machine Learning Gathering/Surveys
查看>>
HTML <select> 标签
查看>>
类加载机制
查看>>
tju 1782. The jackpot
查看>>
HTML5与CSS3基础(五)
查看>>
WinDbg调试C#技巧,解决CPU过高、死锁、内存爆满
查看>>
linux脚本中有source相关命令时的注意事项
查看>>
css样式表中的样式覆盖顺序
查看>>