如图所示,有一个层数为n(n≤1000)的数字三角形。现有一只蚂蚁从顶层开始向下走,每走下一级时,可向左下方向或右下方向走。求走到底层后它所经过数字的总和的最大值。
输入
第一个整数为n,以下n行为各层的数字。
输出
一个整数,即最大值,保证不超过整型的最大范围。
样例输入
5
1
6 3
8 2 6
2 1 6 5
3 2 4 7 6
样例输出
23
提示
最大值=1+3+6+6+7=23
#include <stdio.h>
#define MAX 1010
int n;
int D[MAX][MAX];
int max(int m, int n)
{
return m>n ? m : n;
}
int MaxSum(int i, int j)
{
if (i == n)
return D[i][j];
int x = MaxSum(i + 1, j);
int y = MaxSum(i + 1, j + 1);
return max(x, y) + D[i][j];
}
int main()
{
int i, j;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1;