堆栈知识详解(简单易懂)分析.pptVIP

  • 15
  • 0
  • 约1.25万字
  • 约 75页
  • 2017-08-25 发布于湖北
  • 举报
堆栈知识详解(简单易懂)分析

问题抽象 3个塔,n个碟子 初始:所有碟子放在1号塔,大的在底下,小的在上面 任务:把碟子移动到2号塔,顺序不变, 可用3号塔辅助 限制 每次只能移动一个碟子 总是大碟子在下,小的在上 递归解法 移动碟子的方法:move(n, t1, t2, t3)——将n个碟子从t1移到t2,t3辅助 可分解为3个步骤 将n-1个碟子从t1移到t3:move(n-1, t1, t3, t2) 将最大的碟子从t1移到t2 将n-1个碟子从t3移到t2:move(n-1, t3, t2, t1) 递归规则 基本情况 汉诺塔递归程序 void TowersOfHanoi(int n, int x, int y, int z) {// Move the top n disks from tower x to tower y. // Use tower z for intermediate storage. if (n 0) { TowersOfHanoi(n-1, x, z, y); cout Move top disk from tower x to top of tower y endl; TowersOfHanoi(n-1, z, y, x);} } ?moves(n)=2n-1——最少次数,Θ(2n) 汉诺塔

文档评论(0)

1亿VIP精品文档

相关文档