using
System;
using
System.Collections.Generic;
class
GFG
{
static
int
N = 3;
static
int
maxPathSum(
int
[, ] tri,
int
i,
int
j,
int
row,
int
col,
int
[, ] dp){
if
(j == col ){
return
Int32.MinValue ;
}
if
(i == 0 ){
return
tri[i, j] ;
}
if
(dp[i, j] != -1){
return
dp[i, j] ;
}
return
dp[i, j] = tri[i, j] + Math.Max(maxPathSum(tri, i-1, j, row, col, dp),
maxPathSum(tri, i-1, j+1, row, col, dp)) ;
}
public
static
void
Main(
string
[] args)
{
int
[, ] tri =
new
int
[, ] { { 1, 5, 3 },
{ 4, 8, 0 },
{ 1, 0, 0 } };
int
[, ] dp =
new
int
[N, N];
for
(
int
i = 0; i < N; i++)
for
(
int
j = 0; j < N; j++)
dp[i, j] = -1;
Console.WriteLine(maxPathSum(tri, 2, 0, 2, 2, dp));
}
}