Competitive Programming Academy · Lektion

Stitælling i et gitter

Summér stier fra hjørne til hjørne

Lektion 1 af 413 trin

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] = 1

Kanterne 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. 🧭

Gratis at komme i gang

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

  1. Stitælling i et gitter
  2. Mindste stisum med forhindringer
  3. Længste fælles delsekvens
  4. Edit distance trin for trin
← Tilbage til Competitive Programming Academy