关闭

数字三角形问题

215人阅读 评论(0) 收藏 举报
分类:
#include "iostream"
#include "algorithm"
#include "fstream"
using namespace std;

/*
注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的数或者右边的数。

d[i][j] 表示到达第i行,第j列时,最优路径上数字总和最大值
d[i][j] = max{d[i-1][j], d[i-1][j-1]} + a[i][j] 
d[1][1] = a[1][1];
*/

int d[50][50];
int a[50][50];

int max(int a, int b)
{
    return a>b? a:b;
}

int triangle(int n)
{
    d[1][1] = a[1][1];
    for(int i=2; i<=n; i++)
        for(int j=1; j<=i; j++) 
            d[i][j] = max(d[i-1][j], d[i-1][j-1]) + a[i][j];

    int max = d[n][1];
    for(i=2; i<=n; i++)
        if(max < d[n][i])
            max = d[n][i];
    return max;
}

int main()
{
    ifstream fin("triangle.txt");
    int n;
    cout  << "三角形行数:";
    fin >> n;  cout << n;
    cout << "\n输入三角形:\n";
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=i; j++)
        {
            fin >> a[i][j];
            cout << a[i][j] << " ";
        }   
        cout << endl;
    }

    cout << "从顶到底经过的数字总和最大为:" << triangle(n) << endl;
    fin.close();
    return 0;
} 

这里写图片描述

0
0
查看评论

蓝桥杯-动态规划-java算法训练 数字三角形

问题描述   (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路   径,使该路径所经过的数字的总和最大。   ●每一步可沿左斜线向下或右斜线向下走;   ●1<三角形行数≤100;   ●三角形中的数字为整数0,1,…99;   .   (图3.1-1) 输入格式 ...
  • qq_34594236
  • qq_34594236
  • 2016-04-16 09:51
  • 2693

【算法】数字三角形问题

 1.问题描述:如右图所示,从数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最小(也有的求最大值),路径上的每一步都只能往左下或右下走。
  • u010119170
  • u010119170
  • 2014-08-27 09:33
  • 2205

经典动态规划问题--数字三角形 POJ--1163

经典动态规划问题--数字三角形 POJ--1163
  • linsheng9731
  • linsheng9731
  • 2014-04-16 13:38
  • 1456

【动态规划】数字三角形问题

Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,对于给定的由 n行数字组成的数字三角形, 计算从三角形的顶至底的路径经过的数字和的最大值。 注意:对于第i层的第j个数字,其所在路径的下一个数字只能是第i+1层的第j个或第j+1个数字。 &#...
  • u010932314
  • u010932314
  • 2014-07-08 17:36
  • 1207

Codevs 数字三角形 问题合集

1220 数字三角形 时间限制: 1 s    空间限制: 128000 KB    题目等级 : 黄金 Gold 题目描述 Description 如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路...
  • qq_35776409
  • qq_35776409
  • 2017-03-17 16:19
  • 150

蓝桥杯 数字三角形(java题解)

问题描述   (图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路   径,使该路径所经过的数字的总和最大。   ●每一步可沿左斜线向下或右斜线向下走;   ●1<三角形行数≤100;   ●三角形中的数字为整数0,1,…99;   .   (图3.1-1) ...
  • qq_15370821
  • qq_15370821
  • 2016-06-02 09:36
  • 1182

算法:动态规划2 数字三角形路径最短

题目描述 Description如图所示的数字三角形,从顶部出发,在每一结点可以选择向左走或得向右走,一直走到底层,要求找出一条路径,使路径上的值最大。 输入描述 Input Description第一行是数塔层数N(1<=N<=100)。第二行起,按数塔图形,有一个或多个的整数,表示该...
  • Shine_WuSilence
  • Shine_WuSilence
  • 2016-12-10 10:34
  • 394

[LintCode 109] 数字三角形(Python)

题目描述给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。注意事项 如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。样例 比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], ...
  • yurenguowang
  • yurenguowang
  • 2017-08-30 14:46
  • 527

算法 -- 数字三角形之动态规划

好久没有好好写算法啦,因此今天晚上就思考实现老师说的一道算法题目: 用动态规划求解数字三角形. 下面简单描述下题目含义: 数字三角形中的数字要求为不超过100的非负整数.题目规定从最顶层开始往下走,选择一条路径,这条路径要求每一步沿着左斜线或者右斜线走,并且路径上的数字之和为最大值. 例如下面这...
  • u013166575
  • u013166575
  • 2015-11-20 01:10
  • 1952

Java实现-数字三角形

给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。  注意事项 如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。 您在真实的面试中是否遇到过这个题?  Yes ...
  • qq_14927217
  • qq_14927217
  • 2017-06-21 20:38
  • 633
    个人资料
    • 访问:394095次
    • 积分:12007
    • 等级:
    • 排名:第1475名
    • 原创:832篇
    • 转载:47篇
    • 译文:4篇
    • 评论:127条
    最新评论