每日刷题(六十五)
ALGO-124、数字三角形
这是一个典型递推题,可以参考博文——算法五:动态规划(数字三角形、最长上升子序列、最长公共子序列、神奇的口袋)
详细C代码如下:
#include<stdio.h>
int a[101][101] = {0};
int maxarray[101] = {0};
#define max(a, b) (a > b ? a : b)
int main()
{
int n;
scanf("%d", &n);
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j <= i; j++)
{
scanf("%d", &a[i][j]);
}
}
for(j = 0; j < n; j++)
{
maxarray[j] = a[n - 1][j];
}
for(i = n - 2; i >= 0; i--)
{
for(j = 0; j <= i; j++)
{
maxarray[j] = a[i][j] + max(maxarray[j], maxarray[j + 1]);
}
}
printf("%d\n", maxarray[0]);
return 0;
}