Saya mencoba membuat algoritma yang melakukan seperti berikut Silakan klik di sini untuk melihat persyaratan

Tetapi ketika saya masuk x = 3 y = 5 d = 24 berfungsi dengan baik dan output berfungsi sebagaimana seharusnya tx = 3 ty = 3 rd = 0

Tetapi ketika saya memasukkan x = 3 y = 9 d = 29 itu tidak mencetak nilai yang benar, mengapa dan bagaimana memperbaikinya?

Kode:

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, 02:39

1 menjawab

Jawaban Terbaik

Berikut adalah solusi untuk tugas dalam tautan yang Anda posting. Tentunya bisa dioptimalkan.

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, 00:20