#include<algorithm>
using namespace std;
#define maxn 101
int d[maxn][maxn];
int n;
int* maxsum;
int main()
{
int i , j;
//输入多少行
int n;
scanf("%d",&n);
for( i = 1; i <= n; i++){
for(j = 1; j <= i; j++){
scanf("%d",&d[i][j]);
}
}
//空间优化 maxsum指向d数组的最后一行 用一维数组保存数值
maxsum = d[n];
//动态规划核心 自下往定形
for(int i = n -1; i >=1;--i)
for(int j = 1; j <= i; ++j)
//滚动循环
maxsum[j] = max(maxsum[j] ,maxsum[j+1]) + d[i][j];
//所以maxsum[1]就是题目要求输出的最大值
printf("%d",maxsum[1]);
return 0;
}
求三角形最大值 dp
最新推荐文章于 2022-08-11 13:15:03 发布