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

题目:汉诺塔问题

时间:2020-03-15 11:25:00      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:stream   color   题目   div   程序   步骤   end   noi   code   

汉诺塔问题。有三根柱子A、B、C。设A柱上有n个盘子,盘子的大小不等,大的盘子在下,小的盘子在上,如下图所示。要求将A柱上的n个盘子移到C上,每一次只能移一个盘子。在移动过程中,可以借助于任一根柱子,但必须保证三根柱子上的盘子都是大的盘子在下,小的盘子在上。要求编一个程序打印出移动盘子的步骤。

#include<iostream>
using namespace std;

void move(char x,char y){
    cout<<x<<"->"<<y<<endl;
}
void hanoi(int n,char A,char B,char C){
    if(n == 1) move(A,C);
    else{
        hanoi(n-1,A,C,B);//以C为平台,把A上面n-1个搬到B 
        move(A,C);//再把A最上一个(从底下数第n(指函数里的n)个)放以在C柱上 
        hanoi(n-1,B,A,C);// 以A为平台,把B上那n-1个搬到C 
    } 
/*不要想太复杂,这里的ABC在传来传去中,指代确实有改变,
但从第n个盘的移动考虑就可,把上面n-1做整体
*/ } int main(){ int num; cout<<"请输入A柱盘数:"; cin>>num; hanoi(num,A,B,C) ; return 0; }

 

题目:汉诺塔问题

标签:stream   color   题目   div   程序   步骤   end   noi   code   

原文地址:https://www.cnblogs.com/OKDA/p/12496511.html

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