三、动态规划(1)-数学三角形

数学三角形


将所有的maxSum初始化为-1,然后递归计算然后将值保留其中,如果已经计算过就直接返回,否则的话就计算下面的返回最大值。


另一种思路:

从下往上计算,将每一层计算的值保留在数组中,则可以得到最终的值。只需一遍计算。最下面一层不用计算。

#include <iostream>
#include<algorithm>

using namespace std;

#define MAX 101

int D[MAX][MAX];
int  n;
int * maxSum;

int main(){
    int i, j;
    cout << "输入三角形行数:";
    cin >> n;
    cout << endl;
    cout << "输入三角形:" << endl;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= i; ++j){
            cin >> D[i][j];
        }
    }
    maxSum = D[n];
    for (i = n - 1; i >= 1; --i)
    {
        for (j = 1; j <= i; ++j)
            maxSum[j] = max(maxSum[j], maxSum[j + 1]) + D[i][j];
    }

    for (i = 1; i <= n; ++i)
        {
            for (j = 1; j <= i; ++j)
                cout << D[i][j] << " ";
            cout << endl;
        }
    cout << "maxSum(1,1): " << maxSum[1] << endl;
}

【总结】:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 婉兮 1 当年看甄嬛传,安陵容一出场,我就知道,她和甄嬛做不了好姐妹。 为什么呢?你看她躲闪扑朔的眼神和战战兢兢的...
    婉xi阅读 1,397评论 8 36
  • 我在上一篇文章就说过,写作是我最推荐的输出倒逼输入的学习方式。本篇文章我就专门来讲讲如何写作。 为什么写作 写作的...
    Keegan小钢阅读 1,034评论 1 48
  • 1.先上一个案例 a.接口名称如果是获取天气预报那么应该突出“获取”,第一个单词应该是动词,for example...
    悦者生存阅读 7,756评论 0 0