Ниже приведена грубая сила решения проблемы с минимальной заменой монет. Требуется int A, который является внесенным изменением, и массив монетных деноминаций. Он возвращает объект, результаты, который имеет минимальные монеты, которые могут быть возвращены на основе массива монетных достоинств, а также массив монет.Divide and Conquer - Minimum Change - Return Coins as Array
Например, если просили дать сдачу на 10
центов со значениями [1, 2, 5]
, он должен вернуть 2
монеты мин и массив [0, 0, 2]
для двух пятаков.
Он возвращает правильное значение min, но не правильный массив монет.
# values the algorithms should return, the min num of coins, the actual
# coins in an array, and the original
# array of coin denominations
class Results:
a = 0
change = []
coinsDenom = []
# A is an array of coin denominations
# C is the change to be made
# returns results object
def changeslow(A, C):
res = Results()
res.coinsDenom = C
res.change = []
# initialize your change array to be the length of the coindenom array
for i in range(0, len(res.coinsDenom)):
res.change.append(0)
minCoins = A
for i in [j for j in C if j <= A]:
if j == A:
res.a = 1
res.change[i] = res.change[i] + 1
return res
nextcall = changeslow(A-i, C)
numCoins = 1 + nextcall.a
if numCoins < minCoins:
minCoins = numCoins
res.change = nextcall.change
res.change[0] = res.change[0] + 1
res.a = minCoins
return res
Не используйте 'i' /' j'/'Ā' /' C' для переменных, которые представляют собой вещи ... это делает намного сложнее для кого-то другого, чтобы поддерживать/устранять неисправность вашего кода. – TemporalWolf
В чем вопрос? Вам нужна помощь в отладке? [mcve] –
Он возвращает правильное значение min, но не правильный массив монет. – user3612719