美文网首页
动态规划数字三角形

动态规划数字三角形

作者: Super_邓帅 | 来源:发表于2017-01-02 23:12 被阅读0次


给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。
输入数据a[m][n]:
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
最优解数组b[m][n]:

分析:

分析:
  这是一道典型的动态规划问题,求顶到底的一条路径数字总和最大,按照动态规划思想,从底往上,子问题的和大,那么父问题的和就大,所以在给数组打底子的时候,就要找大的
1、二位数组代表什么:b[i][j]代表从这个点一直走到最后的最大值
2、数组打底:b数组把n-1行填充起来
3、递推式:根据题目可知,要从n-2行往0行遍历,也就是从下往上。公式为:b[m][n]=max{ b[m+1][n]+a[m][n] , b[m+1][n+1]+a[m][n] }

#include<stdio.h>
#define n 5           //行数 

int main(){
    int **a=new int*[n];  //接收输入的数据 
    int **b=new int*[n];  //存放最优值,b[i][j]存放着a[i][j]到底端的最大路径的和 
    for(int i=0;i<n;i++){
        a[i]=new int[n];
        b[i]=new int[n];
    } 
    for(int i=0;i<n;i++){          
        for(int j=0;j<=i;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=0;i<n;i++)     //数组打底工作
        b[n-1][i]=a[n-1][i];
    for(int i=n-2;i>=0;i--){
        for(int j=0;j<=i;j++){
    b[i][j]=(b[i+1][j]+a[i][j])>(b[i+1][j+1]+a[i][j])?(b[i+1][j]+a[i][j]):(b[i+1][j+1]+a[i][j]);
        }
    }
    printf("%d\n",b[0][0]);
    return 0;
} 
运行截图

相关文章

  • 动态规划 2020-03-17

    动态规划 动态规划重要的是:判断状态,状态转移方程 数字三角形 问题描述给定一个数字三角形,找到从顶部到底部的最小...

  • 动态规划合集

    动态规划合集 前言:把学习到的「动态规划模型」在这里记录下来 0X00 总结 数字三角形模型 最长上升子序列模型 ...

  • 动态规划01

    动态规划作为暑期集训第一天的内容,相对简单一些,然而动态规划后面也有几道很难的题目,我们以第一道数字三角形开始:题...

  • 蓝桥杯动态规划练习题--数字三角形

    一道蓝桥杯的动态规划练习题: 历届试题 数字三角形[http://lx.lanqiao.cn/problem.pa...

  • 动态规划 数字三角形

    题目:有一个迷宫是一个被称为“数字三角形”的n(n不超过200)层迷宫,这个迷宫的第i层有i个房间,分别编号为1....

  • 动态规划数字三角形

    给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。输...

  • 动态规划 数字三角形

    问题描述 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左...

  • 数字三角形「动态规划」

    数字三角问题有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数,如图:...

  • 动态规划之数字三角形

    题目重述描述73 88 1 02 7 4 44 5 2 6 5(图1) 图...

  • 动态规划练习——数字三角形

    问题描述: 从三角形的顶点往下走,只能走自身正下方和右下方的坐标,返回从最顶端到最底下所经过的路径值加起来的最大值...

网友评论

      本文标题:动态规划数字三角形

      本文链接:https://www.haomeiwen.com/subject/wqrgvttx.html