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

来源:互联网 发布:vue.js 动态绑定事件 编辑:程序博客网 时间:2024/06/06 09:26
  • 题目:

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

  • 思路:

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

3 2 4 1 3 6

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

3->13 2->5 4->10 1 3 6
  • 代码如下
#include <iostream>#include <algorithm>using namespace std;#define MAX 101int 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[ ][ ] 数组里了,反正留着原数也没啥用。

1 0
原创粉丝点击