数字三角问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法与分析课程设计报告

题目:数字三角问题专业:

班级:

学号:

姓名:

太原工业学院计算机工程系

2012年11 月21 日

一、算法问题描述

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

二、算法问题形式化表示

对于给定的由n行数字组成的数字三角形,编程计算从三角形的顶至底的路径经过的数字和的最大值。

三、期望输入与输出

期望输入:第一行输入数字三角形的行数n,1≤n≤100。接下来n行是数字三角形各行中的数字,所有数字在0~99之间。

期望输出:输出的数是计算出来的最大值。

四、算法分析与步骤描述

最优子结构:从下往上看,最底层到底 n-1 层的最优解包含最底层到底 n 层的最优解;重叠子问题:要求得从最底层到 n 层的解需求的从最低层到 n-1 层的解;由以上两个性质,本题最适合用动态规划解;状态转移方程:res[i-1][j] = max{(array[i-1][j] + res[i][j]),(array[i-1][j+1] + res[i][j])}说明:。array:原数组,res:结果数组。表示第i层第j个数字到最低端的最优解五、问题实例及算法运算步骤

如一个n=4的数字三角形,

5

4 6

8 5 1

3 5 7 2

找一条路径从数字三角形的顶点到底边,是走过路径的数字之和最大。

采用自底向上的递归计算,从n-1行逐次向上递加,舍去一个较小的,最

后只剩顶点和最后一行,即可求出做经过路径的最大值。

六、算法运行截图

七、算法复杂度分析

外层循环用时n,内层用时1、2、。。。。、n,

故总用时1+2+3+。。。。+n=(1+n)*n/2=O(n^2)。

相关文档
最新文档