J'essaie de créer un algorithme qui fait comme suit Veuillez cliquer ici pour voir l'exigence

Mais quand j'entre x = 3 y = 5 d = 24, cela fonctionne bien et que la sortie fonctionne comme il se doit être TX = 3 TY = 3 RD = 0

Mais quand j'entre x = 3 y = 9 d = 29 Il n'imprime pas les valeurs correctes, pourquoi et comment le réparer?

Code:

x=int(input("Please Enter x Value: "))
y=int(input("Please Enter y Value: "))
D=int(input("Please Enter D Value: "))

leftovers = None
current_solution = []
current_best = None

max_ys = int(D/y)

for i in range(1,max_ys+1):
    first_leftovers = D % (i * y)
    num_xs = int(first_leftovers/x)
    second_leftovers = first_leftovers % x
    if current_best is None:
        current_best = second_leftovers
        current_solution = [i,num_xs,second_leftovers]
    elif second_leftovers < current_best:
        current_best = second_leftovers
        current_solution = [i,num_xs,second_leftovers]

tx = current_solution[0]
ty = current_solution[1]
remaining = current_solution[2]
print("TX: %s, TY: %s, Remaining distance: %s" % (tx, ty, remaining))
-3
jigaral157 3 juin 2021 à 02:39

1 réponse

Meilleure réponse

Voici une solution à la tâche dans le lien que vous avez posté. Il peut sûrement être optimisé.

x=int(input("Please Enter x Value: "))
y=int(input("Please Enter y Value: "))
D=int(input("Please Enter D Value: "))

r_best=float("inf")
t_best=float("inf")
best_tx=None
best_ty=None
for tx in range(D//x+1):
    for ty in range(D//y+1):
        r=D-x*tx-y*ty
        t=tx+ty
        if r>=0 and (r<r_best or r==r_best and t<t_best):
            r_best=r
            t_best=t
            best_tx=tx
            best_ty=ty
print("TX: %s, TY: %s, Remaining distance: %s" % (best_tx, best_ty, r_best))
0
user2952903 3 juin 2021 à 00:20