Hogy kéne megoldani ezt a Python feladatot?
A függvény bemenete egy n elemű lista (2 <= n <= 10000, 1 <= nᵢ <= 1000) és egy k szám (1 <= k <= 50).
A lista elemei egymás utáni állomásokat jelképeznek, értékük relatív költséget jelent, egy állomásról átugrani egy másik állomásra a két állomás közti költségek különbsége (mindig nemnegatív érték).
Maximum k állomást ugorhatunk előre.
A függvény visszatérési értéke a legkisebb költség kell hogy legyen, amivel eljuthatunk az első állomásról az utolsóra.
Például [30, 20, 30, 50] a lista és k = 2.
Mivel k = 2, ezért 1 vagy 2 állomást ugorhatunk előre.
(ha k = 3 lenne, akkor 1, 2 vagy 3 állomást ugorhatnánk, k = 4-nél 1, 2, 3 vagy 4-et és így tovább)
A lehetséges utak:
1-2-3-4 (mindig 1-et ugrunk): |30-20|+|20-30|+|30-50| = 40
1-2-4 (először 1-et ugrunk, aztán 2-t): |30-20|+|20-50| = 40
1-3-4 (először 2-t ugrunk, aztán 1-et): |30-30|+|30-50| = 20
Így 20 a megoldás, ez a legkisebb költségű út.
Ha például [20, 20, 20] a lista, akkor a minimum költség 0, mert mindegy hova ugrunk, mindig |20-20| = 0 lesz a költség.
Ezt hogy kéne megcsinálni?
Azt próbáltam, hogy a jelenlegi állomás + k intervallumban megkeresem a minimumot és mindig oda ugrok, de ez nem mindig ad jó megoldást.
Ilyesmivel próbálkozok, talán van is egy működő megoldásom. For ciklussal végig nézem az első állomástól k-ig, azokból a pontokból pedig rekurzívan tovább és egy globális tömbbe mentem az eredményeket amiből aztán visszaadom a minimumot.
Az a probléma hogy nagyobb tömbökre nagyon lassú.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!