汉诺塔

转载 2015年11月19日 14:24:58

汉诺塔问题思路:

如果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;
}

汉诺塔源码

  • 2017年11月21日 13:49
  • 846B
  • 下载

java汉诺塔小游戏

  • 2017年11月02日 20:14
  • 21KB
  • 下载

[百练4147]汉诺塔问题(递归)

题目描述: 总时间限制: 1000ms 内存限制: 65535kB 描述 一、汉诺塔问题   有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次...
  • pkuout
  • pkuout
  • 2017年02月07日 22:15
  • 289

汉诺塔_Java代码

  • 2016年10月19日 14:20
  • 2KB
  • 下载

汉诺塔课程设计报告与源码

  • 2016年07月07日 19:28
  • 82KB
  • 下载

【C语言】递归 - 汉诺塔

汉诺塔(Hanoi Tower)C语言
  • kerecs
  • kerecs
  • 2016年11月13日 15:11
  • 181

C语言汉诺塔程序代码

  • 2015年09月25日 20:42
  • 313B
  • 下载

C#汉诺塔非递归

  • 2015年01月05日 11:47
  • 31KB
  • 下载

汉诺塔简单图形设计思想4(C)

前面已经做了设计汉诺塔的一些工作,接下来我们该如何相对完整的实现汉诺塔的问题了,从开始的设计汉诺塔图形(呵呵没有颜色不算图形吧),之后了解汉诺塔的递归过程,现在就是如何把设计图形和递归的过程结合在一起...

汉诺塔问题

  • 2014年12月16日 22:05
  • 532KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汉诺塔
举报原因:
原因补充:

(最多只允许输入30个字)