开发者社区> 问答> 正文

遇到一个选取最大值问题,求解答。

Bob 和 Alice 是青梅竹马。今天,Bob 终于要鼓起勇气向 Alice 表白了!说到表白,自然是少不了买花了。Bob 来到了花店,花店一共提供了 9 种花,每一种花都有对应的价钱。但是 Bob 的零花钱有限,不能把所有的花都买下来送给 Alice。为了方便挑选,Bob 给这 9 种花分别标号 1-9,Bob 希望买到的花按照编号可以排出尽可能大数字,请问 Bob 能够排出的最大的数字是多少?输入一个正整数 value,代表 Bob 拥有的零花钱。(0<=value<=10^6)和有 9 个数字的数组 a,ai 代表第 i 种花的价格。(1<=ai<=10^5,1<=i<=9)输出一个数字,表示 Bob 可以排出的最大数字。如果 Bob 不能排出任何一个数字,则输出 -1。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 15:46:31 484 0
1 条回答
写回答
取消 提交回答
  • 首先,选取最大值,意味着首先这个结果的“位数”要足够多,比如假设所有的花价格都是 1 元钱,则 11111111 是花 9 块钱能买到的最大值,而不是 333 或者 9这样的方案。这样相当于根据输入,输出的位数可以用很小的时间代价来确定:“用可用钱数,除以最便宜的花的价格,并向下取整”。假设这里的位数为 m。其次,在位数确定的情况下,高位数字越大,结果也就越大,比如同样是8元钱,只能购买价格为5的5号花,和价格为3的3号花时,购买35就是最差的方案,而 53 才是正确答案。而且因为每个花的数量是无限的,所以可以模拟这个“从高位开始,逐个选取能买得起的最大的数字;同时每选完一位后,要确保剩下的钱,依旧可以买到 m 位数字的组合方案。” 则输入:2 [9,11,1,12,5,8,9,10,6] 输出:33

    2021-12-23 18:18:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载