当前位置: 首页 > 面试题库 >

Python代币更改

红弘盛
2023-03-14
问题内容

我在做找零钱的问题。我已经解决了这个问题,因为它会打印出我需要进行最少更改的硬币数量,但是我该如何更改程序以使其也打印那些硬币呢?

这是一个示例I/O

输入: coin_change(48, [1, 5, 10, 25, 50])

输出: [6, [25, 10, 10, 1, 1, 1]]

目前,我的代码仅返回6

顺便说一句,这只能通过递归来完成。 不允许循环

码:

def change(C, V):
    def min_coins(i, aC):
        if aC == 0:
            return 0
        elif i == -1 or aC < 0:
            return float('inf')
        else:
            return min(min_coins(i-1, aC), 1 + min_coins(i, aC-V[i]))
    return min_coins(len(V)-1, C)

问题答案:

程序的其他版本:

def change(C, V, res=None):
    res = [] if res is None else res
    if len(V) == 0:
        return len(res), res
    maxx = max(V)
    V.remove(maxx)
    ans = C//maxx
    if ans == 0 and maxx < C :
        res += [maxx] * ans
        return len(res), res
    else:
        res += [maxx] * ans
        return  change(C % maxx, V, res)

print change(48,[1, 5, 10, 25, 50])
print change(30,[25, 10, 2, 3, 1])

输出:

(6, [25, 10, 10, 1, 1, 1])
(3, [25, 3, 2])

PS:如果您愿意,我会添加一个说明。



 类似资料:
  • 问题:https://leetcode.com/problems/coin-change/ 解决方案:https://repl.it/@Stylebender/HatefulAliceBlueTransverse#index.js 我理解从“按钮式”构建dp阵列解决方案的一般概念流程,但我只是想知道关于第10行: dp[i]=数学。最小值(dp[i],1 dp[i-硬币[j]]; 当你选择当前的第

  • 我需要帮助。node.js编写的云功能正在抛出错误,并且不会在我的Android java应用程序中引起推送通知(警报)提醒已发表评论或用户喜欢帖子。在Firebase Console上,我能够在云功能日志中获取错误消息: 当我在Firebase Cloud函数日志上查看错误消息时,我还得到以下信息: 信息非常明确:以前有效的注册令牌可能因各种原因而被取消注册。我看过关于这些错误主题的其他帖子,但

  • 代币信息API,接口的参数说明请参考Etherscan API 约定, 文档中不单独说明。 通过合约地址获取ERC20 Token总供应量 了解ERC20 代币定义与创建 https://api.etherscan.io/api?module=stats&action=tokensupply&contractaddress=0x57d90b64a1a57749b0f932f1a3395792e12

  • 动态规划变更问题(有限硬币)。我正在尝试创建一个以以下内容作为输入的程序: 输出: 输出应该是大小为1的数组,其中每个单元格代表我们需要改变单元格索引量的最佳硬币数。 假设数组的单元格位于index: 5,内容为2。这意味着为了给出5(INDEX)的变化,您需要2(单元格的内容)硬币(最佳解决方案)。 基本上,我需要这个视频的第一个数组的输出(C[p])。这与有限硬币的大区别是完全相同的问题。链接

  • 我试图在硬币兑换问题中实现贪婪方法,但需要降低时间复杂度,因为编译器不会接受我的代码,而且由于我无法验证,我甚至不知道我的代码是否正确。函数应返回进行更改所需的注释总数。如果无法获得给定金额的更改,则返回-1。如果金额等于面额列表中可用的货币之一,则返回1。

  • 我有一列和另一列。列['currency']包含以下格式的对象:美元、欧元、瑞典克朗、澳元等。 我想通过转换所有其他货币,将所有['amount']值转换为美元,并在新列中打印新的转换,但我在这一点上卡住了: 我应该把每一个符号和每一个符号联系起来吗?