数字三角形问题

原创 2016年08月30日 15:32:17

方法一:

  递归:

  代码如下:

         int solve(int i,int j){

           return a[i][j]+(i==n?0:max(solve(i+1,j),solve(i+1,j+1)))      //效率太低,起原因在于重复计算

       }

方法2:

递推计算:

代码如下:

     int i,j;

  for(int j=1;j<=n;j++) d[n][j]=a[n][j];

 for(int i=n-1;i>+1;i++)

 for(int j=1;j<i;j++){

     d[i][j]=a[i][j]+max(d[i+1][j],d[i+1][j+1]);

}


方法3:

记忆化搜索:在递归的思想上加以优化,不会出现重复计算

代码如下:

memset(d,-1,sizeod(d));//将d[ ] 初始化为-1

int solve(int i;int j){

if(d[i][j]>=0) return d[i][j];   //已求

return d[i][j]=a[i][j]+max(d[i+1][j],d[i+1][j+1]);

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

数字三角形问题

算法 数字三角形问题

题目给定一个由n行数字组成的数字三角形,设计算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大测试用例: 5(行数) 7 3 8 8 1 0 2 7 4 4 4 5 2 6...

数字三角形问题

Description 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (Figure 1) Figure 1 shows a number triang...

动态规划—数字三角形问题

数字三角形问题 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个...

数字三角形问题

问题描述: 有一个形式如下的数字三角形:                      ...

数字三角形问题

7    3 8   8 1 0  2 7 4 4 4 5 2 6 5 如上图所示,从一个数字三角形的顶部走到底部有很多条不同的路径,规则是只能从当前节点走到下一层相邻的节点,即下一层的左边或右边。例...

(动归)数塔问题/数字三角形

问题描述:  给定一个有n行数字组成的数字三角形, 如下图所示. 试设计一个算法, 计算出从三角形的顶至底的一条路径, 使该路径经过的数字和最大.  #include void m...

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

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

DP经典应用(一)数字三角形问题

《算法竞赛入门》中动态规划的第一个例子就是经典的数字三角形问题。问题描述: 有一个由非负整数组成的三角形,每一行只有一个数,除了最下行之外每个数的左下外和右下方各有一个数。 1 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)