现在的位置: 首页 > 综合 > 正文

汉诺塔算法

2013年02月06日 ⁄ 综合 ⁄ 共 418字 ⁄ 字号 评论关闭

最简步骤:2的N次幂-1

 

 

为了实现 n个盘从 借助c 从a 移动到 b

思路如下: 首先考虑极限当只有一个盘的时候 只要 盘直接从 a -> b即可 那么当有2个盘的时候就只要先把1号盘从a -> c 然后 把2号盘 a->b 再 把 2好盘从 c - > b 那么当有n个盘的时候你只要先把 n-1个 盘 借助 b 移动到 c 然后将 n号盘从 a -> b 那么这时候只要将 n-1想办法从c移动到 b 借助 a 那么就可以先把 n-2个盘借助b移动到a 然后 把n-1号盘从c-> b如此递归就是了! #include <stdio.h> void mov(int n,char a,char b) { printf("盘%d : 从 %c ---> %c\n",n,a,b); } void Hanoi(int n,char a,char b,char c) { if(n == 0) return ; Hanoi(n-1,a,c,b); mov(n,a,b); Hanoi(n-1,c,b,a); } int main() { Hanoi(2,'a','b','c'); return 0; }

抱歉!评论已关闭.