您的位置:首页 > 其它

【动态规划】数字三角形最大和(二)(递推循环)

2017-04-16 10:38 417 查看

题目:

见上一篇文章 数字三角形最大和(一)

思路:

二维数组存放三角形,从最底层向上递推。

3
24
136
l2 r1 等于下一行与他计算结果的较大值,同理

3->13
2->54->10
136
代码如下

#include <iostream>
#include <algorithm>
using namespace std;

#define MAX 101

int d[MAX][MAX];
int n;

int MaxSum()
{
for(int i=n-1;i>=1;i--){
for(int j=1;j<=i;j++)
d[i][j] = max(d[i+1][j],d[i+1][j+1]) + d[i][j];
}
}

int main()
{

cin >> n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++)
cin >> d[i][j];
}
MaxSum();
cout << d[1][1];
return 0;
}


为了节省空间,我把结果直接就存在 d[ ][ ] 数组里了,反正留着原数也没啥用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息