IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 牛客网奇安信2020大数据开发工程师编程题(买口罩) -> 正文阅读

[数据结构与算法]牛客网奇安信2020大数据开发工程师编程题(买口罩)

小明有N元钱去药店买口罩,药店里有6个品牌的口罩,A品牌2个装(2元),B品牌3个装(2元)、C品牌1个装(3元)、D品牌5个装(1元),E品牌4个装(5元),F品牌3个装(2元),由于限购每个品牌最多只能买一个,小明最多能买多少口罩?

话不多说先放代码

n=int(input())
res=0
dp=[[0 for i in range(n+1)] for j in range(7)]
mask=[(2,2),(3,2),(1,3),(5,1),(4,5),(3,2)]
for i in range(1,7):
    for j in range(1,n+1):
        if j>=mask[i-1][1]:
            
            dp[i][j]=max(dp[i-1][j],mask[i-1][0]+dp[i-1][j-mask[i-1][1]])
        else:
            dp[i][j]=dp[i-1][j]
print(dp[-1][-1])

这个题目看似是基于贪心算法的思想,每次花钱尽可能的挑性价比最高的口罩。但是这种情况会出现一种特殊状况,既若买完D、B、F后剩余5元,按照贪心算法的思想,此时购入性价比最高的A口罩,但是这样就会导致买完A口罩后剩下的3元。贪心思想导致程序依旧选择剩余口罩中性价比最高的E口罩,但很显然E口罩价值5元无法购买。至此算法终止,但很明显这样操作不如直接在剩余5元时直接购入E口罩。

因此,这题的真正解法应该是采用动态规划的思想,这是一个典型的0-1背包问题。

为了方便描述我们以1-6号表示A-F品牌口罩

我们以dp[i][j]记录当手头有j块钱时,面对1-i号口罩时能买到的最多的口罩。我们从左上到右下更新dp数组,当面对i号口罩的价格超出j块钱时,无论如何都无法购入,所以这种情况和面对1-(i-1)既dp[i-1][j]时的最大数量相同;当i号口罩价格少于j块钱时,我们是可以购买的,但是可能需要舍弃之前买入的口罩为i号口罩留下足够的资金,此时我们就要衡量是砸锅卖铁买i号口罩,还是不要他。如果要他,那此时的口罩总量为mask[i-1][0]+dp[i-1][j-mask[i-1][1]],既第i号口罩数量加上砸锅卖铁后剩下的口罩数量;如果不要那就和买不起的时候一样,为dp[i-1][j]

更新完毕后,最终结果就在dp[6][n],n是我们的初始资金

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:17:27  更:2021-09-05 11:19:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:43:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码