背包问题
2015-11-11 00:19
232 查看
读《背包九讲》的几点感受,这里mark一下。
a.01背包问题题目描述:
有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。
该问题的解决的一般思路是:写状态转移方程、动态规划。
View Code
a.01背包问题题目描述:
有N件物品和一个容量为V 的背包。放入第i件物品耗费的空间是Ci,得到的价值是Wi。求解将哪些物品装入背包可使价值总和最大。
该问题的解决的一般思路是:写状态转移方程、动态规划。
//我的代码 #include <stdio.h> #include <string.h> const int num=501,oo=1000000000; int f[10001]={0},p[num],w[num]; int main() { int t,n,weight_e,weight_f,i,j,weightpig; scanf("%d",&t); while (t--){ scanf("%d%d",&weight_e,&weight_f); for (i=1;i<=weight_f;i++) f[i]=oo; weightpig=weight_f-weight_e; scanf("%d",&n); for (i=1;i<=n;i++) scanf("%d%d",&p[i],&w[i]); for (i=1;i<=n;i++){ for (j=w[i];j<=weightpig;j++){ if (f[j-w[i]]+p[i]<f[j]) f[j]=f[j-w[i]]+p[i]; } } if (f[weightpig]==oo){ printf("This is impossible.\n"); } else{ printf("The minimum amount of money in the piggy-bank is %d.\n",f[weightpig]); } } }
View Code
相关文章推荐
- 开源资源(不断更新)
- 安装ionic开发环境
- Volley的使用
- select、poll、epoll
- 我的OC练习(六)- 协议与代理
- 反转二进制数输出十进制值
- select poll epoll iocp kqueue
- 我的工作之旅
- zzuli OJ 1117: 查找数组元素
- c++中将文件内容清空
- 在frame中访问父窗口中的变量时,无法访问
- C#App.config的使用
- 近日工作小结_2015年11月11日0:10:48
- 程显峰:保障双11不掉“底裤”的5种安全武器
- Hibernate一级和二级缓存
- Home Server
- Home Server
- Android Studio用patch更新方法
- ARM的位置无关程序设计
- Python 一篇学会多线程