Stitælling i et gitter
Summér stier fra hjørne til hjørne
Stitælling i et gitter er en gratis Competitive Programming Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Competitive Programming Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Competitive Programming Academy-kurset indeholder 4 lektioner i alt.
Det klassiske gitterproblem
Du starter øverst til venstre i et gitter og vil til nederst til højre. Hvert skridt går enten til højre eller ned. Hvor mange forskellige stier findes der?
Hvorfor DP passer
Hver celle kan nås fra cellen ovenfor eller cellen til venstre. Dette overlap er præcis grunden til, at det er et DP-problem.
Definér tilstanden
Lad dp[i][j] være antallet af måder at nå celle (i, j) fra starten på. At navngive tilstanden tydeligt er halvdelen af arbejdet.
Overgangen
Du kommer kun fra oven eller fra venstre, så antallet er deres sum. Det er denne overgang, der driver hele tabellen.
dp[i][j] = dp[i-1][j] + dp[i][j-1]Basistilfældet
Startcellen kan nås på præcis én måde: ved ikke at gøre noget. Derfor er dp[0][0] 1, før du udfylder noget andet.
dp[0][0] = 1Kanterne har én sti
Celler i den øverste række eller venstre kolonne har én lige rute. Deres antal er altid 1, fordi den ene nabo ligger uden for gitteret.
Byg tabellen
Lav en tabel på m gange n, der er udfyldt med nuller. Når størrelsen fastlægges på forhånd, bliver din indeksering enkel, og du undgår overraskelser.
dp = [[0] * n for _ in range(m)]Udfyld i læserækkefølge
Gå gennem rækkerne og derefter kolonnerne, fra top til bund og fra venstre mod højre. Denne rækkefølge sikrer, at begge naboer er klar, før du bruger dem.
for i in range(m):
for j in range(n):
...Svarcellen
Efter udfyldningen ligger antallet af stier i den sidste celle. Svaret er dp[m-1][n-1], det nederste højre hjørne.
answer = dp[m-1][n-1]Spar hukommelse med én række
Hver række har kun brug for rækken ovenfor, så du kan beholde en enkelt række og opdatere den på stedet. Det reducerer hukommelsesforbruget til O(n).
row[j] += row[j-1]Det matematiske genvejstrick
Uden blokeringer er svaret en binomialkoefficient: vælg, hvilke af de samlede skridt der går nedad. DP er stadig bedst, når der opstår forhindringer.
Hurtigt tjek
Du udfylder dp[i][j] for en åben indre celle. Hvilken formel er korrekt?
Opsummering: Optælling af stier
Definér dp som antallet af stier til en celle, sæt dp[0][0] til 1, og læg cellen ovenfor sammen med cellen til venstre. Hjørnet indeholder dit svar. 🧭
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Stitælling i et gitter” gratis?
Ja — hele teksten til “Stitælling i et gitter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Competitive Programming Academy-kurset, skal du opgradere til CoddyKit PRO. Competitive Programming Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Stitælling i et gitter”?
Summér stier fra hjørne til hjørne Du øver dig i Competitive Programming Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Competitive Programming Academy?
Der kræves ingen tidligere erfaring. Competitive Programming Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Stitælling i et gitter”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Competitive Programming Academy-lektion?
Ja. Alle Competitive Programming Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Stitælling i et gitter
- Mindste stisum med forhindringer
- Længste fælles delsekvens
- Edit distance trin for trin