zoukankan      html  css  js  c++  java
  • Hanoi

    汉诺塔问题

    时间限制: 1 Sec  内存限制: 128 MB

    题目描述

    汉诺(Hanoi)塔问题:古代有一个梵塔,塔内有三个座A、B、C,A座上有n个盘子,盘子大小不等,大的在下,小的在上(如图)。有一个和尚想把这n个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求打印移动的步骤。如果只有一个盘子,则不需要利用B座,直接将盘子从A移动到C。

    输入

    输入盘子个数n

    输出

    输出盘子最少移动的步骤

    样例输入

    3

    样例输出

    1:A->C
    2:A->B
    3:C->B
    4:A->C
    5:B->A
    6:B->C
    7:A->C

     1 #include <iostream>
     2 
     3 using namespace std;
     4 int count = 1;
     5 void Hanoi(int n, char a, char b, char c)
     6 {
     7     if(n == 1)
     8         cout << count++ << ":" << a << "->" << c << endl;
     9     else {
    10         Hanoi(n-1,a,c,b);
    11         cout << count++ << ":" << a << "->" << c << endl;
    12         Hanoi(n-1,b,a,c);
    13     }
    14 }
    15 
    16 int main()
    17 {
    18     int n;
    19     char a = 'A', b = 'B', c = 'C';
    20     while(cin >> n)
    21     {
    22         Hanoi(n,a,b,c);
    23     }
    24     return 0;
    25 }
  • 相关阅读:
    csp-s模拟103
    csp-s模拟102
    csp-s模拟101
    csp-s模拟100
    csp-s模拟99
    csp-s模拟98
    csp-s模拟97
    csp-s模拟96
    csp-s模拟95
    csp-s模拟94
  • 原文地址:https://www.cnblogs.com/jxust-jiege666/p/6575833.html
Copyright © 2011-2022 走看看