题目本身很简单,开始用一个一维数组来做,只需确定一下每个数左下方和右下方的数的位置即可,测试数据通过,但是提交老是runtime error, 加大数组空间还是这个错误。。。
没办法,开了二维数组,直接就A了,郁闷。
#include <iostream>
using namespace std;
#define MAX(a, b) a>b?a:b
const int rMax = 101;
int dp[rMax][rMax];
int main()
{
int row, i, j;
scanf("%d", &row);
for(i = 1; i <= row; i++)
for(j = 0; j < i; j++)
scanf("%d", &dp[i][j]);
for(i = row-1; i >= 1; i--)
for(j = 0; j < i; j++)
dp[i][j] += MAX(dp[i+1][j], dp[i+1][j+1]);
printf("%d\n", dp[1][0]);
return 0;
}