汉诺塔

汉诺塔问题思路:

如果n为1直接把汉诺塔从A移动到C

如果n为多个的话,先把n个汉诺塔分为1到n-1和n俩部分,分三步走(1)把1到n-1号汉诺塔从A移动到B

 (2)把n号汉诺塔从A移动到C

 (3)把1到n-1号汉诺塔再从B移动到C




源码:


#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */


int count=1; 
void moveTower(int n,char *from,char *depend, char *too){    //把高度为n的汉诺塔从from移动到to,借助于depend 
//如果只有一个高度为1的汉诺塔,要从from移动到to,直接移动到to 
if(n==1){
cout<<"第"<<count<<"步:1"<<"从"<<from<<"移动到"<<too<<endl;
count++;

else{
//如果是多个汉诺塔要从from移动到to,先把上面n-1的汉诺塔从from移动到depend 
moveTower(n-1,from,too,depend);
//再把最底层的汉诺塔从from移动到to
cout<<"第"<<count<<"步:"<<n<<"从"<<from<<"移动到"<<too<<endl; 
count++;
//最后把刚刚移动到depend上面的汉诺塔全部移动到to上面
moveTower(n-1,depend,from,too);



}


int main(int argc, char *argv[]) {
int n; //汉诺塔高度
cin>>n;

moveTower(n,"A","B","C");
 
return 0;
}

阅读更多
个人分类: 数据结构和算法
上一篇权限添加 easyui datagrid toolbar 隐藏
下一篇eclipse快捷点大全(转载)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭