python-3.x - 这种硬币找零算法是如何工作的?
问题描述
这是从高到低排序的硬币面额列表。
coinage = [500, 200, 100, 50, 20, 10, 5, 1]
金额为445。这个函数的输出是
[(2, 200), (2, 20), (1, 5)]
我真的对算法感到困惑。它是如何工作的?
解决方案
你可以使用这样的东西。由于coinage
列表已经反向排序,因此事情变得容易。您只需要遍历列表并执行逻辑:
coinage = [500, 200, 100, 50, 20, 10, 5, 1]
money = 445
sum, lst = 0, []
for x in coinage:
if x <= money:
lst.append((money // x, x))
sum = (money // x) * x
money -= sum
print(lst)
# [(2, 200), (2, 20), (1, 5)]
推荐阅读
- regex - 删除字符串中单个字符之间的空格
- laravel - 我们将 composer install for docker for Laravel 或 Lumen 放在哪里
- angular - 基于角度的 PWA 不适用于 Google 云平台,但适用于 firebase
- java - 不能抛出 NoSuchElementException
- datastax - 运行 Cassandra 时的身份验证警告
- r - 修改 R 脚本以从两列中读取日期
- typescript - 使用 SubSink 而不是 Subscriptions 数组有什么意义
- python - 读取目录中的所有文件并根据其内容进行计数
- javascript - ReactJS:如何使用动态键访问和更新嵌套状态对象?
- jmeter - 带条件的 Json 断言