汉诺塔算法

最简步骤: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; }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值