Ci-dessous est une solution de force brute au problème de changement de pièce minimum. Il faut un int A, qui est le changement qui doit être fait, et un tableau de dénominations de pièces de monnaie. Il retourne un objet, les résultats, qui a les pièces de monnaie minimales qui peuvent être retournées sur la base du tableau des dénominations de pièces de monnaie ainsi que la matrice de pièces de monnaie.Diviser et Conquérir - Minimum de Changement - Renvoyez des Pièces en Array
Par exemple, si on lui demandait de donner changement pour 10
cents avec les valeurs [1, 2, 5]
, il doit retourner 2
pièces min et un tableau [0, 0, 2]
pour deux pièces de dix cents.
Il renvoie la valeur minimale correcte, mais pas le bon tableau de pièces.
# 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
Ne pas utiliser 'I' /' j'/'A' /' C' pour les variables qui représentent des choses ... il est beaucoup plus difficile pour quelqu'un d'autre de maintenir/dépanner votre code. – TemporalWolf
Quelle est votre question? Avez-vous besoin d'aide pour le déboguer? [mcve] –
Il renvoie la valeur minimale correcte, mais pas le bon tableau de pièces. – user3612719