Ich versuche, einen Algorithmus zu erstellen, der wie folgt, der wie folgt ist, wie Bitte klicken Sie hier, um die Anforderung anzuzeigen .

Wenn ich jedoch x = 3 y = 5 d = 24 eingreife, funktioniert es Fein- und Ausgangsarbeiten, da es TX = 3 TY = 3 RD = 0 sein sollte

Wenn jedoch x = 3 y = 9 d = 29 eingreift, druckt es nicht korrekte Werte, warum und wie Sie es beheben können?

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 Juni 2021 im 02:39

1 Antwort

Beste Antwort

Hier ist eine Lösung für die Aufgabe in der Verbindung, die Sie gepostet haben. Es kann sicherlich optimiert werden.

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 Juni 2021 im 00:20