资料结构导论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1-5 遞迴演算法 河內塔問題(2/9) 現在我們考慮n=1~3的狀況,以圖示方式示範處理河內塔問題的步驟: n=1個套環 (當然是直接把盤子從1號木樁移動到3號木樁。) n=2個套環 1.將套環從1號木樁移動到2號木樁 1-5 遞迴演算法 河內塔問題(3/9) n=2個套環 2.將套環從1號木樁移動到3號木樁 3.將套環從2號木樁移動到3號木樁,就完成了 1-5 遞迴演算法 河內塔問題(4/9) n=2個套環 完成 結論:移動了22-1=3次,盤子移動的次序為1,2,1(此處為盤子次序) 步驟為:1→2,1→3,2→3(此處為木樁次序) 1-5 遞迴演算法 河內塔問題(5/9) n=3個套環 1.將套環從1號木樁移動到3號木樁 2.將套環從1號木樁移動到2號木樁 1-5 遞迴演算法 河內塔問題(6/9) n=3個套環 3.將套環從3號木樁移動到2號木樁 4.將套環從1號木樁移動到3號木樁 1-5 遞迴演算法 河內塔問題(7/9) n=3個套環 5.將套環從2號木樁移動到1號木樁 6.將套環從2號木樁移動到3號木樁 1-5 遞迴演算法 河內塔問題(8/9) n=3個套環 7.將套環從1號木樁移動到3號木樁,就完成了 完成 結論:移動了23-1=7次,盤子移動的次序為1,2,1,3,1,2,1(盤子次序) 步驟為1→3,1→2,3→2,1→3,2→1,2→3,1→3(木樁次序) 河內塔問題(9/9) 以下以遞迴式來表示河內塔遞迴函數演算法: 1-5 遞迴演算法 void hanoi(int n, int p1, int p2, int p3) { if (n==1) //遞迴出口 printf(套環從 %d 移到 %d\n, p1, p3); else { hanoi(n-1, p1, p3, p2); printf(套環從 %d 移到 %d\n, p1, p3); hanoi(n-1, p2, p1, p3); } } 範例 1.5.3 請設計一支C語言程式,以遞迴式來實作河內塔演算法的求解。 1-5 遞迴演算法 #include stdio.h #include stdlib.h void hanoi(int, int, int, int); /* 函數原型 */ int main() { int j; printf(請輸入所移動套環數量:); scanf(%d, j); hanoi(j,1, 2, 3); system(pause); return 0; } void hanoi(int n, int p1, int p2, int p3) { if (n==1) /* 遞迴出口 */ printf(套環從 %d 移到 %d\n, p1, p3); else { hanoi(n-1, p1, p3, p2); printf(套環從 %d 移到 %d\n, p1, p3); hanoi(n-1, p2, p1, p3); } } 範例 1.5.4 請問河內塔問題中,移動n個盤子所需的最小移動次數?試說明之。 1-5 遞迴演算法 解答 課文中曾經提過當有n 個盤子時,可將河內塔問題歸納成三個步驟,其中an為移動n個盤子所需要的最少移動次數,an-1為移動n-1個盤子所需要的最少移動次數,a1=1為只剩一個盤子時的次數,因此可得如下式子: an= an-1+1+ an-1 =2an-1+1 =2(an-2+1) =4an-2+2+1 =4(2an-3+1)+2+1 1-5 遞迴演算法 =8an-3+4+2+1 =8(2an-4+1)+4+2+1 =16an-4+8+4+2+1 =... =... =2n-1a1+ 因此,an=2n-1*1+ =2n-1+2n-1-1=2n-1,得知要移動n個盤子所需的最小移動次數為2n-1次 程式效能分析(1/3) 範例 1.6.1 考慮下列x←x+1的執行次數。 1-6 程式效能分析 (1) : x←x+1 :

文档评论(0)

yuxiufeng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档