我在做找零钱的问题。我已经解决了这个问题,因为它会打印出我需要进行最少更改的硬币数量,但是我该如何更改程序以使其也打印那些硬币呢?
这是一个示例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。如果金额等于面额列表中可用的货币之一,则返回1。
动态规划变更问题(有限硬币)。我正在尝试创建一个以以下内容作为输入的程序: 输出: 输出应该是大小为1的数组,其中每个单元格代表我们需要改变单元格索引量的最佳硬币数。 假设数组的单元格位于index: 5,内容为2。这意味着为了给出5(INDEX)的变化,您需要2(单元格的内容)硬币(最佳解决方案)。 基本上,我需要这个视频的第一个数组的输出(C[p])。这与有限硬币的大区别是完全相同的问题。链接
我有一列和另一列。列['currency']包含以下格式的对象:美元、欧元、瑞典克朗、澳元等。 我想通过转换所有其他货币,将所有['amount']值转换为美元,并在新列中打印新的转换,但我在这一点上卡住了: 我应该把每一个符号和每一个符号联系起来吗?