第三章实践报告

1、实践题目。

数字三角形

2、问题描述。

给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的

顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。

3、算法描述

for(i=n-1;i>=1;i--){

     for(j=0;j<i;j++){

         if(b[i][j]>b[i][j+1])

         b[i-1][j]=b[i][j]+a[i-1][j];

         else

         b[i-1][j]=b[i][j+1]+a[i-1][j];

}}

自底向上比较,选择大的数字。

4、算法时间及空间复杂度分析(要有分析过程)

因为算法里有2重for循环,所以时间复杂度为n的2次方;

申请了a、b两个数组,空间复杂度为n的二次方。

5、心得体会(对本次实践收获及疑惑进行总结)

在运行这题目的代码的时候总是出错,后来发现是因为最后输出的时候输出的是b[1][1]而不是b[0][0];因为忽视了这个小毛病而导致浪费了很多时间,以后对于问题的逻辑要更加严谨才行。

 

posted on 2018-11-10 22:34  邓Loser  阅读(88)  评论(0编辑  收藏  举报