aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-08-28 05:00:57 +0800
committerMistivia <i@mistivia.com>2025-08-28 05:00:57 +0800
commit045bca0f6c0e17351372f65b60f635dc37da75d1 (patch)
treecc8d55b4af1c5848ddf02ad072bf1be0cc4e9204
parent9f4bae54801d78426b7089d0ab13f45f57656b3b (diff)
solve 15
-rw-r--r--0015/main.pas54
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.
+