码迷,mamicode.com
首页 > 其他好文 > 详细

汉诺塔递归实现

时间:2015-04-19 17:25:24      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

     问题实现:当n==1时候只需将盘从A移到C即可,那摩当规模为n时候,可以转化为规模为n-1的情况

      1,借助C,将n-1个圆盘从A移到B

      2,将第n个盘从A移动到C

      3,借助A,将n-1个盘从B移动到C

/*下面代码的时间复杂度为O(2^n)*/

//hannoi.cpp
//--------------------------------------------------
#include<iostream>
using namespace std;
void MOVE(int n, char x,char y);
void hannoi(int n, char A, char B, char C);
int main(){
int n;
while (cin >> n){
hannoi(n,‘A‘,‘B‘,‘C‘);
}
}
void MOVE(int n, char x,char y){
/*将第n个铜盘从x移到y*/
cout << "将" << n << "从" << x << "移到" << y << endl;
}
void hannoi(int n, char A, char B, char C){
/*表示将第n个铜盘借助B由A移动到C*/
if (n == 1){
/*此处为递归的结束条件*/
MOVE(1, A, C);
}
else{
hannoi(n - 1, A, C, B); /*将n-1个圆盘借助C从A移动到C*/
MOVE(n, A, C);/*将第n个圆盘从A移动到C*/
hannoi(n - 1, B, A, C);
}
}

汉诺塔递归实现

标签:

原文地址:http://www.cnblogs.com/td15980891505/p/4439404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!