using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TriangleCalc
{
class Program
{
int[][] dataArry = new int[5][];
int[][] sumArry = new int[5][];
int n=4;
public Program()
{
for (int i = 0; i < dataArry.Length; i++)
{
dataArry[i] = new int[i + 1];
}
dataArry[0][0]=7;
dataArry[1][0]=3;dataArry[1][1]=8;
dataArry[2][0]=8;dataArry[2][1]=1;dataArry[2][2]=0;
dataArry[3][0]=2;dataArry[3][1]=7;dataArry[3][2]=4;dataArry[3][3]=4;
dataArry[4][0]=4;dataArry[4][1]=5;dataArry[4][2]=2;dataArry[4][3]=6;dataArry[4][4]=6;
dumpArray(dataArry);
for (int i = 0; i < sumArry.Length; i++)
{
sumArry[i] = new int[i + 1];
}
}
static void Main(string[] args)
{
Program prog = new Program();
/*
int i=0,j=0;
prog.calcArray(prog.dataArry, i, j, 4, prog.dataArry[i][j]);
Console.WriteLine("--------------------------------");
int maxSum = prog.MaxSum(0, 0);
Console.WriteLine("{0}", maxSum);
*/
Console.WriteLine("--------------------------------");
prog.calcMax();
Console.WriteLine("--------------------------------");
}
void calcArray(int[][] dataArry, int i, int j, int max_line,int sum)
{
if (i==max_line)
{
Console.WriteLine("{0},{1}:{2}",i,j,sum);
return;
}
else
{
calcArray(dataArry, i+1, j, max_line, sum+dataArry[i+1][j]);
calcArray(dataArry, i+1, j+1, max_line, sum+dataArry[i+1][j+1]);
}
}
void dumpArray(int[][] dataArry)
{
for (int i = 0; i < dataArry.Length; i++)
{
int[] line = dataArry[i];
for (int j = 0; j < line.Length; j++)
{
Console.Write("{0},", line[j]);
}
Console.WriteLine();
}
}
int MaxSum(int i, int j){
if (i == n)
{
sumArry[i][j] = dataArry[i][j];
return sumArry[i][j];
}
sumArry[i+1][j] = MaxSum(i+1,j);
sumArry[i + 1][j + 1] = MaxSum(i + 1, j + 1);
sumArry[i][j]=max(sumArry[i+1][j], sumArry[i+1][j+1]) + dataArry[i][j];
return sumArry[i][j];
}
void calcMax()
{
int[] maxSum = null;
for (int i = n - 1; i >= 0; --i)
{
maxSum = dataArry[i];
for (int j = 0; j <=i; ++j)
{
maxSum[j] = max(dataArry[i+1][j], dataArry[i+1][j+1]) + dataArry[i][j];
}
}
Console.WriteLine("maxSum[0]:{0}", maxSum[0]);
/*
7,
3,8,
8,1,0,
2,7,4,4,
4,5,2,6,6,
--------------------------------
maxSum[0]:30
--------------------------------
请按任意键继续. . .
*/
}
int max(int x, int y)
{
return x > y ? x : y;
}
}
}