动态规划解之

View Code

 1 /* 2 总共n中饮料,每种饮料表示为(S[i],V[i],C[i],H[i],B[i]),S表示名称,V表示容量,C表示可能的最大容量,H表示满意度,B表示实际购买量 3 V[i]*B[i]求和=V的情况下,H[i]*B[i]求和最大化 4 */ 5  6 #include <iostream> 7 using namespace std; 8  9 struct Beverage10 {11     int volumn;12     int maxOffer;13     int satisfication;14     int purchase;15 };16 17 int V;18 int maxSatisfy;19 20 int DP(Beverage* b,int n)21 {22     int** M=new int*[V+1];23     for(int i=0;i<=V;++i)24         M[i]=new int[n];25     26     for(int i=0;i<=V;++i)27     {28         if(i/b[n-1].volumn>b[n-1].maxOffer)29             M[i][n-1]=b[n-1].satisfication*b[n-1].maxOffer;30         else31             M[i][n-1]=b[n-1].satisfication*(i/b[n-1].volumn);32     }33     for(int i=0;i<=V;++i)34         for(int j=0;j<n-1;++j)35             M[i][j]=-999;36 37     for(int j=n-2;j>=0;--j)38     {39         for(int i=0;i<=V;++i)40         {41             for(int k=0;k<=b[j].maxOffer;++k)42             {43                 if(b[j].volumn*k<=i)44                 {45                     if(b[j].satisfication*k+M[i-b[j].volumn*k][j+1]>M[i][j])46                     {47                         M[i][j]=b[j].satisfication*k+M[i-b[j].volumn*k][j+1];48                         b[n].purchase=k;49                     }50                 }51             }52         }53     }54     return M[V][0];55 }56 57 int main()58 {59     int num;60     cout <<"enter the number of kinds of beverages:";61     cin >>num;62     Beverage* beve=new Beverage[num];63     cout <<"enter the max volumn:";64     cin >>V;65     maxSatisfy=DP(beve,num);66     cout <<"The max satisfication is "<<maxSatisfy<<endl;67     return 0;    68 }

转载于:https://www.cnblogs.com/daniagger/archive/2012/03/19/2406235.html

[编程之美]饮料供货相关推荐

  1. 编程之美-饮料供货方法整理

    [试题描述] 方法一:时间复杂度O(V*N*max(Ci)),空间复杂度O(V*N) 方法二:空间复杂度O(V) 方法三:

  2. 编程之美(六)饮料供货

    在微软亚洲研究院上班,大家早上来的第一件事是干啥呢?查看邮件?NoNoNo,是去水房拿饮料:酸奶,豆浆,绿茶.王老吉.咖啡.可口可乐--(当然,还是有很多同事把拿饮料当做第二件事). 管理水房的阿姨们 ...

  3. 编程之美 1.6 买饮料问题

    饮料供货 书中开始又是一堆看不懂的前述,感觉说了半天也没说清楚题目,看了解法一才看明白. 题目:假设STC共提供n中饮料,用(Si ,Vi,Ci,Hi,Bi )(对应的是饮料的名字,容量,可能的最大数 ...

  4. java 编程之美_《编程之美—微软技术面试心得》PDF 下载

    第1章 游戏之乐--游戏中碰到的题目 1.1 让CPU占用率曲线听你指挥 1.2 中国象棋将帅问题 1.3 一摞烙饼的排序 1.4 买书问题 1.5 快速找出故障机器 1.6 饮料供货 1.7 光影切 ...

  5. 饮料供货java_动态规划(3):饮料供货动态规划(3):饮料供货 | 学步园...

    题目 题目来自<编程之美>:在微软亚洲研究院上班,大家早上来的第一件事是干啥呢?查看邮件?No,是去水房拿饮料:酸奶,豆浆,绿茶.王老吉.咖啡.可口可乐--(当然,还是有很多同事把拿饮料当 ...

  6. 《编程之美》读书笔记19: 3.9 重建二叉树

    <编程之美>读书笔记19: 3.9 重建二叉树 对根节点a以及先序遍历次序P和中序遍历次序I,查找a在I中的位置,将I分为两部分,左边部分的元素都在a的左子树上,右边的元素都在a的右子树上 ...

  7. 编程之美计算0到N中包含数字1的个数

    转自:http://blog.csdn.net/hongjuntu123/article/details/8743266 有这样一个函数f(n),对于任意正整数n,它表示从 0 到 n 之间出现&qu ...

  8. 《编程之美》读书笔记08:2.9 Fibonacci序列

    <编程之美>读书笔记08:2.9 Fibonacci序列 计算Fibonacci序列最直接的方法就是利用递推公式 F(n+2)=F(n+1)+F(n).而用通项公式来求解是错误的,用浮点数 ...

  9. [搜索]字符串的相似度问题-从编程之美说起

    在<编程之美>之3.3讲到了计算字符串的相似度,请看下图 原文作者做了很详细的解释,有兴趣的朋友可以参考原文. 其实,总结为一点,是求两个字符的编辑距离,关于编辑距离,可以参考这儿 htt ...

最新文章

  1. 面试高频!JVM必备教程~
  2. 属性 visibility
  3. Pyqt5 获取命令行参数sys.argv
  4. 你真的懂用户画像吗?
  5. 一文学会 Maven 的版本发布
  6. 设计模式的理解: 适配器模式 Adapter
  7. Python中的高阶函数filter
  8. QT实现带有阴影的渲染3D场景
  9. 关于openstack 专业博主地址.后续更新
  10. JimuReport积木报表,一个好用的开源免费的报表平台!
  11. OPPO Reno7红丝绒新年版开售:精致虎头标识+金色镜头保护圈
  12. if or函数套用_excel常用函数用法解析第二篇——SUMPRODUCT、AND、OR、IF函数
  13. java面试题之spring aop中jdk和cglib哪个动态代理的性能更好?
  14. UDS协议-代码完整性测试
  15. psp记忆棒测试软件,psp记忆棒修复工具 ms-format
  16. java list随机取_java list随机抽取元素的案例
  17. overfeat 测试
  18. 计算机病毒级防范措施总结,计算机病毒及防范措施
  19. Router-view
  20. ipados链接android,iPadOS怎么升级 iPadOS升级教程

热门文章

  1. mysql索引增加栏位_mysql 添加索引 mysql 如何创建索引
  2. 小程序组件报错Uncaught TypeError: Cannot read property 'name' of undefined
  3. mysql脚本中如何写判断_mysql中如何写判断语句
  4. html和ascll有什么关联,什么是HTML ASCII(HTML ASCII)?
  5. Linux删除安卓温控,RK平台关闭温度控制降频功能
  6. c++ 箭头符号怎么打_C++随笔
  7. 如何跨服务器访问html 页面,html页面如何跨域访问另一页面内容,并将部分内容呈现出来?...
  8. 分类数据显示功能_缓存优化
  9. genymotion集成eclipse插件安装教程
  10. AndroidStudio断点调试