2019vivo秋招提前批笔试题第3题
笔试的时候没做出来,就顺手截图了。
虽然知道要用动态规划做,但我一直就不太懂动态规划。笔试完又花了2小时把它做出来了。也不知道性能怎么样,但还好做出来了。
def solution(n, toltal_money, until_price, until_hot):
# 二维数组,每一行代表0到total_money每一个数对应的解(解是一个数组,第0列是最高热度值,后面分别是凑成此热度的因子)
# 因为不允许重复采购同一个商品,所以需要标识一下凑成此热度值时已经购买的商品,方便后面的解用到时查看那些商品是已经购买了的。
price_hot = [[0 for a in range(n+1)] for k in range(toltal_money + 1)]
for i in range(toltal_money + 1):
j = 0
# 临时数组,保存的是二维数组的每一行的值(0到total_money的某些数值的解可能会有多个解法,
# 但我们需要找出热度值最高的哪一个,所以这里需要临时保存一下,在确定了最高热度值得时候再把这个解复制到二维数组中去)
temp = [0 for i in range(n+1)]
# 构造最优解
while j < n:
if (i - until_price[j]) >= 0:
# 判断是否重复买了商品,需要将上一个最高热度值得因子组成复制下来。
for x in range(1, n+1):
temp[x] = price_hot[i - until_price[j]][x]
# 如果新购买的这个商品没有在上一个解里被标示,则可以构成一个解
if temp[j+1] == 0:
last = price_hot[i - until_price[j]][0] + until_hot[j]
# 找出最优解
if temp[0] < last:
temp[0] = last
# 标识已购买得商品,这里我把商品得热度填进去做了标识,这样就可以在数组中直接看出最高热度的组成因子
# 当然把商品加个填进去做标识,甚至直接把它标为1也可以。
temp[j+1] = until_hot[j]
# 将临时存放得最优解放到二维数组里
for x in range(n + 1):
price_hot[i][x] = temp[x]
j += 1
return price_hot[total_money][0]
n = 6
total_money = 1000
until_price = [200, 600, 100, 180, 300, 450]
until_hot = [6, 10, 3, 4, 5, 8]
print("total_money=1000时的解:", solution(n, total_money, until_price, until_hot))
2019vivo秋招提前批笔试题第3题的更多相关文章
- 秋招提前批小结(CVTE一面挂、阿里三面挂)
7月27日:CVTE一面 30分钟(挂) 1.自我介绍 2.有没有做过JavaWeb相关的项目?你觉得难点在哪里呢? 3.你这个博客系统有没有加权限系统?如果被拦截封包获取了账号密码怎么办?(没加,凉 ...
- 京东秋招提前批初试--java开发工程师
1,自我介绍,学过的课程有哪些 2,介绍一下java的内存结构和内存模型(jvm和jmm) 3,对于NIO有没有了解?作用是什么?(基于通道和缓冲区的I/O方式,用的是DirectByteBuffer ...
- 阿里巴巴集团2016校园招聘-Python工程师笔试题(附加题+部分答案)
前言 第一次网上笔试,被虐的很惨.一是不太习惯,最主要的是还是自己对Python的掌握,还不够熟练.下面是这次阿里笔试相关信息 笔试时间是,2015年8月23日,10:00——12:00 对于笔试题, ...
- C/C++笔试题(基础题)
为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...
- 【笔试必备】常见sql笔试题(30题)
sql是测试从业者必备的技能之一,基本上也是笔试必考内容. 所以,不要让sql拖了后腿,有些测友一遇到多表关联查询就犯晕,甚至连单表的执行顺序都没搞懂,下面简单介绍下,顺便给一些题供大家练习. 单表执 ...
- 华为2018软件岗笔试题之第一题python求解分享
闲来无事,突然看到博客园首页上有人写了篇了华为2018软件岗笔试题解题思路和源代码分享.看了下题目,感觉第一题能做出来,就想着用刚刚学的python试着写一下,花费的时间有点长~~,看来又好长时间没练 ...
- 2018春招-今日头条笔试题-第四题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) #-*- coding:utf-8 -*- class Magic: ''' a:用于存储数组a b:用于存储数组b num:用于 ...
- 2018春招-今日头条笔试题-第三题(python)
题目描述:2018春招-今日头条笔试题5题(后附大佬答案-c++版) 解题思路: 本题的做法最重要的应该是如何拼出‘1234567890’,对于输入表达试获得对应的结果利用python内置函数eval ...
- Linux运维必会的实战编程笔试题(19题)
以下Linux运维笔试面试编程题,汇总整理自老男孩.马哥等培训机构,由运维派根据实战需求,略有调整: 企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理 ...
随机推荐
- 部署oVirt4.2+Gluster超融合架构
首先下载最新ovirt-node iso镜像 准备3台机器,配置为2核,16G内存,两块硬盘,1块100G装系统,1块300G做存储 node1.com(192.168.105.221) node2. ...
- html内获取当前文件路径,页面获取当前路径
function getRealPath(){ var curWwwPath = window.document.location.href; var pathName = window.docume ...
- 冰多多团队-第六次Scrum会议
冰多多团队-第六次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj ASR bug修复 接入IAT模块 牛雅哲 完成语音识别->词典->termux的接口设计,熟悉了语法 ...
- leetcode 877. 石子游戏
题目描述: 亚历克斯和李用几堆石子在做游戏.偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] . 游戏以谁手中的石子最多来决出胜负.石子的总数是奇数,所以没有平局. 亚历克斯和李轮流进行,亚 ...
- BaiduPCS-Go的安装及使用
BaiduPCS-Go的安装及使用 linux下会提示输入验证码,浏览器打开验证码url,多输入几次 Contents [hide] 一. 软件下载及安装 二. 软件的使用 1. 账号登录与退出 2. ...
- 运维笔记--Docker文件占用磁盘空间异常处理
场景描述: 1. 服务器运行一段时间后,发现系统盘磁盘空间在不断增加,一开始的时候,不会影响系统,随着时间的推移,磁盘空间在不断增加,直到有一天你会发现系统盘剩余空间即将使用完,值得庆幸的是,如果您使 ...
- 【转】Sql Server查看所有数据库名,表名,字段名(SQL语句)
-- 获取所有数据库名 select * from master..SysDatabases; -- 获取hotline数据库中所有表名 select name from hotline..SysOb ...
- 安装和使用nltk
安装 参考:https://www.cnblogs.com/zrmw/p/10869325.html 分词:注意先分句再分词,这些对象均来自nltk.tokenize库 word_tokenize 导 ...
- java中为什么notify()可能会导致死锁,而notifyAll()则不会
简单的说,notify()只唤醒一个正在等待的线程,当该线程执行完以后施放该对象的锁,而没有再次执行notify()方法,则其它正在等待的线程 则一直处于等待状态,不会被唤醒而进入该对象的锁的竞争池, ...
- Egret《决战沙城》框架学习
源码地址:https://github.com/yicaoyimuys/EgretGameEngine 虽然走花观马看了看,但是收获还是蛮多. mvc: BaseController ...