forgeplus/testcode/Coin.py

29 lines
715 B
Python

def coin_amount(c):
table = [0, c[0]] # 开头放一个0以便直接进行比较
for i in range(2, len(c) + 1):
table.append(max(table[i - 2] + c[i - 1], table[i - 1]))
return table
def back(table, c):
collected_coins = []
lent = len(table) - 1
i = lent
while i >= 1:
if table[i] > table[i - 1]: # 选最后一个
collected_coins.append(c[i - 1])
i -= 2
else:
i -= 1
return collected_coins
if __name__ == "__main__":
c = [5, 1, 2, 10, 6, 2]
temp = coin_amount(c)
collected_coins = back(temp, c)
print("动态规划表:")
print(temp)
print("最大序列:")
print(collected_coins[::-1])