栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

点菜问题动态规划

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

点菜问题动态规划

点菜问题


“因为疫情问题,某公司员工就餐时需通过APP点外卖。每次点外卖的报销金额最大为M元,有N种菜品可以点,每种菜i都有一个评分Pi(即表示菜的受欢迎程度),每种菜i的价格为Vi。现该公司员工如何选择各种菜,能够在报销额度范围内使点到的菜的总评分最大。注意:由于营养均衡的需要,每种菜只能点一次。


输入数据:整数M、N以及每种菜的价格和评分,M表示能够报销的额度,N表示可选择的菜的种类数目。


输出数据:所点菜的最大评分

(1)写出解决此问题所用到的算法及算法设计思想。

‏ 动态规划算法求解。

算法设计思想:

a. 分析问题,问题具备最优子结构性质

b. 建立求解问题的递归公式:

f(i, j)表示当报销金额为j,可选择菜品为i, i+1,…., n时点菜问题的最优值。

求解f(i, j)的递归式如下:

‏(2)根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释

‏c. 依据上面的递归式,以自底向上方式进行计算,可用二维数组f[][]来存储f(i, j)的相应值。当最后求出f(1,n)时,就解决问题,即f(1,n)为问题的最优值(所点菜的最大评分)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号