// C# program for
// Recursive implementation of
// Max sum problem in a triangle
using System;
using System.Collections.Generic;
class GFG
{
static int N = 3;
// Function for finding maximum sum
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)) ;
}
/* Driver program to test above functions */
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));
}
}
// This code is contributed by phasing17