diff options
| author | Mistivia <i@mistivia.com> | 2025-08-28 05:00:57 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-08-28 05:00:57 +0800 |
| commit | 045bca0f6c0e17351372f65b60f635dc37da75d1 (patch) | |
| tree | cc8d55b4af1c5848ddf02ad072bf1be0cc4e9204 | |
| parent | 9f4bae54801d78426b7089d0ab13f45f57656b3b (diff) | |
solve 15
| -rw-r--r-- | 0015/main.pas | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/0015/main.pas b/0015/main.pas new file mode 100644 index 0000000..2bb5ba1 --- /dev/null +++ b/0015/main.pas @@ -0,0 +1,54 @@ +program main; + +type + Row = Array[0..20] of Int64; + Grid = Array[0..20] of Row; + +var + gridpath: Grid; + +procedure init_grid(); +var + i, j: Integer; +begin + for i := 0 to 20 do + begin + for j := 0 to 20 do + gridpath[i][j] := -1; + end; +end; + +procedure calc(row: Integer; col: Integer); +var + r, c: Integer; + ret: Int64; +begin + ret := 0; + if gridpath[row][col] <> -1 then + exit; + + r := row + 1; + c := col; + if (r <= 20) and (c <= 20) then + begin + calc(r, c); + ret := ret + gridpath[r][c]; + end; + + r := row; + c := col + 1; + if (r <= 20) and (c <= 20) then + begin + calc(r, c); + ret := ret + gridpath[r][c]; + end; + gridpath[row][col] := ret; +end; + +begin + init_grid(); + gridpath[20][20] := 1; + calc(0, 0); + writeLn(gridpath[0][0]); +end. + |
