我正在解决这个问题-COLCOIN-在spoj上收集硬币。链接-https://www.spoj.com/problems/COLCOIN/
对于给定的一组面额和你想要的货币,银行会给你最高面额的硬币,直到它不能再给你了,然后转移到下一个最高面额。例如:如果面额为[1,2,3,4,8],如果您要求23卢比,它会先给您两个8卢比的硬币,因为它不能再给任何8卢比的硬币,所以会移动到下一个面额,给您一个4卢比和一个3卢比。
问题是找到最大数量的不同面额,你可以得到一个输入的面额。你从银行要求的钱是一个变量,它实际上不应该出现在图片中,如果我是正确的。
这是我的想法:
试着把低面额的面额加起来,看看它们是否能加起来成为大面额,如果它们是大面额,你就永远不会得到所有的小面额。
假设有1,2和5。1 2
另一个:假设有面额3,4和5。所以3 4
另一个明显错误的想法是从第二高面额开始,找到我们将添加到第二高面额的硬币,然后返回解决方案1(最高面额)。这是不正确的,因为,例如,[1,2,4,17,19],如果我们计算19,试图将其他的18加起来,我们得到17,只有2个面值,而as 26会给出4个面值1942 1
我认为您可以使用以下方法:
示例:1 3 6 8 15 20
=
实施:
js lang-js prettyprint-override">// expects the denominations to be ordered from smallest to largest
// and also expects them to be unique
function findMaxDenominationsInSingleWithdrawal(denominations) {
if (denominations.length <= 2)
return denominations.length
let sum = denominations[0], d = 1
for (let index = 1; index + 1 < denominations.length; index++) {
if (sum + denominations[index] < denominations[index + 1]) {
d++
sum += denominations[index]
}
}
return d + 1
}
console.log(findMaxDenominationsInSingleWithdrawal([1, 3, 6, 8, 15, 20]))
20.2 服务器硬件数据的收集 “工欲善其事,必先利其器”,这是一句大家耳熟能详的古人名言,在我们的信息设备上面也是一样的啊! 在现在 (2015) 正好是 DDR3 切换到 DDR4 的时间点,假设你的服务器硬件刚刚好内存不太够,想要加内存, 那请教一下,你的主板插槽还够吗?你的内存需要 DDR3 还是 DDR4 呢?你的主机能不能吃到 8G 以上的单条内存? 这就需要检查一下系统啰!不想拆机箱
我的Ionic 5应用程序中有以下Firestore数据库结构。 书(集合) {bookID}(带有book字段的文档) 赞(子集合) {userID}(文档名称作为带有字段的用户ID) 集合中有文档,每个文档都有一个子集合。Like collection的文档名是喜欢这本书的用户ID。 我正在尝试进行查询以获取最新的,同时尝试从子集合中获取文档以检查我是否喜欢它。 我在这里做的是用每个图书ID调
我想获取地图的值,找到min值,并为地图的每个条目构造一个新的CodesWitMinValue实例。我希望使用Java11个流,我可以在多行中使用多个流(一个用于min值,一个用于转换)来实现这一点。是否可以使用java 11流和收集器在单行中实现?谢谢。
本文向大家介绍找出可以在Python中收集的最大硬币数量的问题,包括了找出可以在Python中收集的最大硬币数量的问题的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个二维矩阵,其中的单元代表其中的硬币数量。我们有两个朋友来收集硬币,它们分别位于开始时的左上角和右上角。他们遵循以下规则: 硬币收集器可以从单元格(i,j)移至单元格(i + 1,j-1),(i + 1,j)或(i + 1,j
为了更好地理解新的流API,我试图转换一些旧代码,但我被困在这一个。 我似乎无法为它创建有效的收集器:
不保留顺序。我可以使用列表,但我想指出,生成的集合不允许元素重复,这正是接口的用途。