11 找零问题
题目
找零问题, 给个金额让你找出对应的最小硬币数目
coin_change.py
#!/bin/env python3
# -*- coding: utf-8 -*-
# version: Python3.X
__author__ = '__L1n__w@tch'
def coin_change(values, money):
"""
背包问题解法?
:param values: [25, 21, 10, 5, 1]
:param money: 63
:return: {1:1, 2:2, 3:3, 4:4, 5:1, ..., 63:3}
"""
coin_count = {i: 0 for i in range(money_wait_to_change + 1)}
for cents in range(1, money + 1):
min_coins = cents # 从第一个开始到money的所有情况初始
for value in values:
if value <= cents:
temp = coin_count[cents - value] + 1 # 这不是经典的背包?
if temp < min_coins:
min_coins = temp
coin_count[cents] = min_coins
print('面值为:{0} 的最小硬币数目为:{1} '.format(cents, coin_count[cents]))
if __name__ == '__main__':
pocket_monkey = [25, 21, 10, 5, 1]
money_wait_to_change = 63
coin_change(pocket_monkey, money_wait_to_change)
Last updated
Was this helpful?