数字三角问题
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)。