C语言老生常谈的算法问题!算法每日一题之汉诺塔

写烂的编程算法问题!经典算法每日一题之汉诺塔

之所以叫做写烂的编程算法问题,是因为解法到处都是,随便百度一下,遍地都是,

这里就不过分叙说了。

汉诺塔

C语言老生常谈的算法问题!算法每日一题之汉诺塔

代码ppt更多C/C++学习资料私密我”代码”获取

河内塔(又称汉诺塔)问题,就是在一块木板上有三个立柱,在柱1上放着三个圆盘,小的在上面,大的在下面(初始状态)。让被试将在柱1上的三个圆盘移到柱3上面(目标状态)。条件是:每次只能移动任何一个柱子上面的一个圆盘,但大的圆盘不能放在小的圆盘上。通用问题解决者的解决过程即是手段—目的分析的策略。

C语言老生常谈的算法问题!算法每日一题之汉诺塔

代码ppt更多C/C++学习资料私密我”代码”获取

解题思路

递归法

  1. 把A上面n-1个盘子移动到B上。
  2. 把A上最后一个移动到C;
  3. 把B上n-1个移动到A上,再把B上最后一个移动到C;

如此循环2,3,步骤,直到把最后一个盘子移动到C上。

C语言老生常谈的算法问题!算法每日一题之汉诺塔

代码ppt更多C/C++学习资料私密我”代码”获取

代码如下

C语言老生常谈的算法问题!算法每日一题之汉诺塔

C语言老生常谈的算法问题!算法每日一题之汉诺塔

代码ppt更多C/C++学习资料私密我”代码”获取

测试结果

C语言老生常谈的算法问题!算法每日一题之汉诺塔

代码ppt更多C/C++学习资料私密我”代码”获取

阅后战一战

汉诺塔可以通过非递归算法解析,有兴趣的读者可以尝试下,代码网上多的是。关于本方法有精品制作的动态ppt描述,可以获取看下,助于理解。


分享到:


相關文章: