データ構造-Hanoiタワーの問題


説明
A、B、Cを3つの塔座とする.最初は、タワーAにn個の円盤が重ねられ、これらの円盤は下から上へ、大きくから小さく重ねられている.各ディスクは、図に示すように、小さいから大きいまで1,2,......,nと番号付けされている.次に、タワーA上のこれらの円盤の重ね合わせをタワーB上に移動し、同様の順序で重ね合わせることが要求される.ディスクを移動するときは、ルール(1):毎回1つのディスクしか移動できません.ルール(2):大きな円盤を小さな円盤の上に押し付けることは、いつでも許されない.ルール(3):移動ルール(1)-(2)を満たす前提で、円盤をA,B,Cのいずれかのタワーに移動できます.タワーA上のn個の円盤を最小の移動回数でタワーB上に移動し,同じ順序で重畳するアルゴリズムを設計してみた.プログラミングタスク:与えられた正の整数nに対して、プログラミングは最適な移動スキームを計算する.
入力
各入力データの1行目は所定の正の整数nであり、移動する皿数を表し、2行目はタワーの番号であり、1文字で表される.
しゅつりょく
計算した最適移動スキームを出力します.各行は、k番目のディスクがタワーc 1からタワーc 2に移動することを示す正の整数kおよび2文字c 1およびc 2を含む.
サンプル入力
3 a c b 2 x z y
サンプル出力
Move disk 1 from a to c Move disk 2 from a to b Move disk 1 from c to b Move disk 3 from a to c Move disk 1 from b to a Move disk 2 from b to c Move disk 1 from a to c Move disk 1 from x to y Move disk 2 from x to z Move disk 1 from y to z
 
#include 
using namespace std;
void fun(int n,char A,char B,char C)
{
    if(n==1)
        cout<>n)
    {
        cin>>a>>c>>b;
        fun(n,a,b,c);
    }
    return 0;
}