[01背包]求将N重果汁填满杯子时,在保证营养最全的情况下所用的最小价格
来源:互联网 发布:python dateutil 安装 编辑:程序博客网 时间:2024/04/19 16:26
//01背包问题
//求将N重果汁填满杯子时,在保证营养最全的情况下所用的最小价格
#include <stdio.h>
//XXL
int MAX=1000000000;
int w[500],p[500]; //w[i],p[i]表示i果汁的重量和价格
int cost[10000]; //保存指定重量的最小cost(即最小price)
int main(void)
{
int tc, T;
//XXL
int i,j,E,F; // E,F分别为空杯和满杯时的重量
int WL; //weight limit, 杯中允许放入的最大重量
int N; //每个case里juice的种数
scanf("%d", &T);
for(tc = 0; tc < T; tc++)
{
//XXL
scanf("%d%d",&E,&F);
WL = F-E;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d%d",&p[i],&w[i]);
}
cost[0]= 0; //重要初始化
for(i=1;i<=WL;i++)
{
cost[i]=MAX; //初始化cost[]
}
for(i=0;i<N;i++) //每种juice
{
for(j=w[i];j<=WL; j++) //由小往大(杯的最大重量)推算
{
//指定重量的最小cost为下两种情况下的最小者:
//1)放入第i种juice
//2) 不放入第i种juice
if(cost[j] > cost[j-w[i]]+p[i]) //与不放第i种juice的情况相比,当前重量的cost依赖于与(之前不放第i种juice的最小cost)的比较结果。
{
cost[j]= cost[j-w[i]]+p[i];
}
}
}
if(cost[WL]!=MAX) //如果杯中的weight到达最大,此时营养最全,这是最优解
{
printf("%d\n",cost[WL]);
}
else
{
printf("impossible\n");
}
}
return 0;
}
//求将N重果汁填满杯子时,在保证营养最全的情况下所用的最小价格
#include <stdio.h>
//XXL
int MAX=1000000000;
int w[500],p[500]; //w[i],p[i]表示i果汁的重量和价格
int cost[10000]; //保存指定重量的最小cost(即最小price)
int main(void)
{
int tc, T;
//XXL
int i,j,E,F; // E,F分别为空杯和满杯时的重量
int WL; //weight limit, 杯中允许放入的最大重量
int N; //每个case里juice的种数
scanf("%d", &T);
for(tc = 0; tc < T; tc++)
{
//XXL
scanf("%d%d",&E,&F);
WL = F-E;
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%d%d",&p[i],&w[i]);
}
cost[0]= 0; //重要初始化
for(i=1;i<=WL;i++)
{
cost[i]=MAX; //初始化cost[]
}
for(i=0;i<N;i++) //每种juice
{
for(j=w[i];j<=WL; j++) //由小往大(杯的最大重量)推算
{
//指定重量的最小cost为下两种情况下的最小者:
//1)放入第i种juice
//2) 不放入第i种juice
if(cost[j] > cost[j-w[i]]+p[i]) //与不放第i种juice的情况相比,当前重量的cost依赖于与(之前不放第i种juice的最小cost)的比较结果。
{
cost[j]= cost[j-w[i]]+p[i];
}
}
}
if(cost[WL]!=MAX) //如果杯中的weight到达最大,此时营养最全,这是最优解
{
printf("%d\n",cost[WL]);
}
else
{
printf("impossible\n");
}
}
return 0;
}
0 0
- [01背包]求将N重果汁填满杯子时,在保证营养最全的情况下所用的最小价格
- 熬夜者的营养果汁
- (hdu step 6.1.2)Eddy's picture(在只给出二维坐标点的情况下,求让n个点连通的最小费用)
- (hdu step 6.1.6)Jungle Roads(在索引为字符索引的情况下,求让n个点连通的最小费用)
- (hdu step 6.1.7)Connect the Cities(在有的路已经修建好的情况下,求让n个点连通的最小费用)
- 如何在需求不明确的情况下保证测试质量
- 如何在保证睡眠的情况下高效学习工作?
- 在一些边已建的情况下求最小生成树hdu1102
- 快排,保证最坏情况下,栈的深度为log(n)
- 最坏情况下保证时间复杂度为N*logN的快速排序
- 算法有序数组合并---在空间足够的情况下,进行O(n)的合并 并且移动次数最小
- 最有价值的营养食物
- 在不超过价格上限的情况下,点k个菜有多少种点法
- 如何在保证当前Actiivty不被Finish的情况下返回上级界面
- 在n不确定的情况下生成k个随机数
- 求最小的前n个数
- 求n^n和n!的最左边的数字
- 求n^n和n!的最左边的数字
- Java解析XML文件的四种方式之DOM4J解析
- Java类重新加载101:对象、类和类加载器
- 12.04 ubuntu 安装微软雅黑的字体
- [C++反汇编] 栈帧(函数调用过程)
- Azure Pack示例缩放部署架构
- [01背包]求将N重果汁填满杯子时,在保证营养最全的情况下所用的最小价格
- 自定义系统Tabbar选择后的图片和字体颜色
- iOS 面试题(二)
- 配置JDK环境
- Mysql之case,if,ifnull,nullif流程控制函数
- duilib : 改变资源类型,加快程序运行速度.
- c++ threadpool.h
- UIWindow的一点儿思考
- VC++ MFC 获取文件路径 获取文件夹路径