Szöveges feladat megoldás?
Egy folyó partján állunk, amin sziklákon ugrálva akarunk átkelni. N darab (1 <= N <= 80 000) szikla van a vízben és maximum 1 sziklát vagyunk képesek átugrani (tehát az i-edik szikláról az i+1 vagy i+2 sziklára ugorhatunk). K darab (0 <= K <= N) szikla nagyon csúszik, ezekre nem ugorhatunk.
Adott az N szám és egy K elemű tömb, ami a csúszós sziklák indexét tartalmazza (1-gyel kezdődő indexeléssel).
Hányfélekeppen juthatunk át a túlpartra?
Az eredményt modulo 1000000007 adja meg!
Először azt gondoltam, hogy ez egy sima kombinatorikai formulával kiszámolható (bár gondolom a tanár akkor sem arra lenne kiváncsi), de a csúszós sziklák bekavarnak, nem tudom hogy kéne megcsinálni.
Lehet teljesen mas modszernek erti azt, ha Pythonban csak a vegen veszed a modulot?
De csinalhatod ott is pontosan ugyanugy, mint pl. C++-ban.
Hogy erted #10?
Van egy válaszoló aki a hasonló algoritmikus kérdésekhez mindig beírja az alábbiak valamelyikét, vagy ezek valamilyen kombinációját:
- rossz megoldást
- már megint te?
- nem tudsz guglizni?
- mennyit fizetsz?
- akkor várjuk a megoldást (ezt mindig egy másik válaszolónak)
És közben persze ő nem tudja megoldani a feladatot.
A 2-es biztos ő, lehet a 10-es is.
#10: ??? Kifejthetnéd bővebben, mert így semmi értelme.
Mindenesetre a megoldás:
from typing import Iterable
MOD = 1000000007
def count_ways(stone_count: int, slippery_stones: Iterable[int]):
last = 1
second_last = 0
for i in range(1, stone_count+2):
if last == second_last and last == 0:
return 0
if i in slippery_stones:
current = 0
else:
current = (last + second_last) % MOD
second_last = last
last = current
return current
Minden kőre annyiféleképp léphetsz, amennyire az őt megelőző, és az azt megelőzőre összesen. Ha egy kő csúszós, akkor 0-féleképp léphetsz rá. Ha egy helyet megelőző két helyre nem juthatsz el, akkor felesleges tovább számolni, nem tudsz átjutni a túloldalra. A feladat szövege nem volt pontos, nem tudjuk, hogy a kövek a partok között vannak-e vagy valamelyik part a szélső kövek egyike-e. (Ezért feltételeztem, hogy a kövek a két part között vannak.) A kombinatorikai formula azért nem egyszerű, mert a csúszós kövek nem "távolíthatóak el" könnyen, hatásuk függ az őt megelőző kövekhez vezető utak számától. Ráadásul, ha iskolai feladatról beszélünk, akkor könnyebb belátni ennek a megoldásnak a helyességét, mint egy bonyolult kombinatorikai feladat megoldását.
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!