第三章实验报告

实践报告任选一题进行分析。内容包括:

实践题目:

  数字三角形

问题描述:

给定一个由 n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形 的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。

QQ截图20170929023616.jpg

输入格式:

输入有n+1行:

第 1 行是数字三角形的行数 n,1<=n<=100。

接下来 n行是数字三角形各行中的数字。所有数字在0..99 之间。

输出格式:

输出最大路径的值。

输入样例:

在这里给出一组输入。例如:

5 
7 
3 8 
8 1 0 
2 7 4 4
4 5 2 6 5 

输出样例:

在这里给出相应的输出。例如:

30

算法描述:

    从三角形的右下角的数字开始,不断和左边(同一行)的数字进行比较,大者加上上一行对应列的数字x,同时把值放在x上,(因为表格最后没什么其他用处,修改没什么)。

算法时间及空间复杂度分析:

    时间复杂度看for循环,因为只填了上半部分的表格,所以时间复杂度是(n*n/2),即:O(N)=N*N;

      空间复杂度看数组,因为数组是m[n][n],所以空间复杂度是O(n)=n*n.

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

收获:上课时听得很痛苦,因为听不太懂,做完了之后总算是可以理解动态规划可以怎么做了,就是题目做得少,所以做题时也很痛苦。

疑惑:虽然作业和实验题都完成了,但是还是对动态规划没有掌握完全,对最优解的性质和结构特征不够敏感。所以在做题三的时候花了很大力气,但是写完题3后却觉得是一道很普通的动态规划的样式题。

posted @ 2018-11-11 19:01  GYRY  阅读(154)  评论(0编辑  收藏  举报