我试图返回一个数组中一个数的总和所需的硬币数。你知道吗
因此,如果m是143,coin=[200,100,50,20,10,5,2,1],它将返回[0,1,0,2,0,0,1,1],表示没有200个硬币,一个100个硬币,没有50个硬币,两个20个硬币,没有10个硬币,没有5个硬币,一个2个硬币和一个1个硬币。你知道吗
现在我的解决方案返回5,这是硬币的计数。你知道吗
def coinSplit(m):
if m == 0:
return 0
for i in range(len(coin)):
if coin[i] <= m:
return 1 + coinSplit(m-coin[i])
coin = [200, 100, 50, 20, 10, 5, 2, 1]
print(coinSplit(143))
关键是在python中使用算术运算符。特别是除法
/
和模“%”通过遍历列表直到余数为零来获得商和余数。你知道吗
硬币=[200,100,50,20,10,5,2,1]
例如:
重复这个过程直到余数为零
以下迭代实现工作:
这假设一个硬币池,这种贪婪的方法总是产生一个结果。 如果希望递归,可以尝试:
您将返回所需的总硬币数,而不考虑其价值。您需要跟踪每个硬币的编号,我假设您希望创建一个与输入大小相同的列表(
coin = [200, 100, 50, 20, 10, 5, 2, 1]
),并用零初始化它,作为另一个答案,使用模数添加到正确的索引中,然后返回此列表。您仍然可以将其编写为递归,但需要另一个操作来添加正确的索引。你知道吗我认为这就像一个家庭作业,所以我不提供代码给你。我希望这有帮助。你知道吗
相关问题 更多 >
编程相关推荐