zoukankan      html  css  js  c++  java
  • 【题解】Hanoi塔问题

    题目描述

    有三根柱A,B,C。在柱A上有N块盘片,所有盘片都是大的在下面,小片能放在大片上面。并依次编好序号,现要将A上的N块片移到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面的盘片小,请输出移动方法。

    输入输出格式

    输入格式:

    一行,仅一个整数N(1≤N≤15),表示A柱上的盘片数。

    输出格式:

    输出盘片的移动步骤。

    输入输出样例

    输入样例:

    3

    输出样例:

    A-1-C
    A-2-B
    C-1-B
    A-3-C
    B-1-A
    B-2-C
    A-1-C
    用递归,首先分析这道题,解法是先把前n-1个塔从A塔移动到B塔,再把第n个盘从A塔移动到C塔,最后把前n-1个塔从B塔移动到C塔
    具体程序如下:

    #include<iostream>
    using namespace std;
    void hanoi(int n,char start,char trans,char end)
    {
    	if(n==1)
    	{
    		cout<<start<<"-"<<n<<"-"<<end<<endl;
    		return;
    	}
    	else
    	{
    		hanoi(n-1,start,end,trans);
    		cout<<start<<"-"<<n<<"-"<<end<<endl;
    		hanoi(n-1,trans,start,end);
    	}
    }
    int main()
    {
    	int n;
    	cin>>n;
    	hanoi(n,'A','B','C');
    }
    
  • 相关阅读:
    第六周测验
    动态获取屏幕尺寸
    推荐免费的svn空间(SVN代码托管)
    Thinking in Java 4th Edition Source Code
    visio 2010 kit tools
    android studio error
    android studio
    Appendix D. Gradle Command Line
    S2S4H整合注意问题
    javascript原型
  • 原文地址:https://www.cnblogs.com/2021-yanghaoran/p/10735387.html
Copyright © 2011-2022 走看看