ハノイの問題のタワーについて

まず、起源:

ハノイの塔:ハノイの塔(ハノイの塔として知られている)の問題は、教育玩具の古代インドの伝説に由来します。梵天は3つのやって世界を作成したときにダイヤモンドのポストに大きさの順に64枚のディスクとボトムアップの山から、柱を。再び他の柱の上に配置され、下からサイズの順にディスクにブラフマーブラフマンコマンド。そして、所定のディスクは、ディスクがわずか3本の柱の間を移動することができ、小型のディスクに拡大することはできません。

問題は、ハノイ再帰アルゴリズムの塔から茎、第一の柱上のすべてのディスクは、これらすべてのプレートができ、実際には、第3のプレートに乗って、深く再帰の本当の意味を理解するために、多くの問題のように、非常に単純なようです二つの部分、プラッタの底部、及び上部小さなプレートに分け抽象。

 

列Bの移動に列Aからすべてのプレート

(1)N = 1は、一つだけのプレート、一つだけ移動させる必要がある場合:A-> 1-> B;
(2)= 2 N、三回移動させる必要がある場合:
        A-> 1-> C

        - > 2-> B

        C - > 1-> B
N = 3は、移動ステップは、具体的である場合:(3)。

       A-> 1-> B、A - > 2-> C、B - > 1-> C。(3.1)

       A-> 3-> B。(3.2)

       C-> 1-> A、C - > 2-> B、A - > 1-> B。(3.3)

 三つのプレートを図、第3列に最小第一プレートを来て、第2のプレートへの2本の柱の上に、そして第二に最小、最下層あなたは今、最初の列、3列目の一番下のプレートの上に第2小プレートと、上の2列目の最小プレートに続いて、3番目の列に取得することができます上述した第3の柱の中で最も小さい、我々は意志

三本柱は、「A」、「B」、「C」という名前の、私たちは「B」、「C」柱場所によって、これらのプレート上のすべての料理の一番下の上、「C」の柱を支援する方法を見つけることです「」柱に、これハノイの塔を完了し、次のコードが表示されます。

無効ハン(チャー A、チャー   B、チャー C、int型n)を{
         場合(N <= 1 ){ 
                  のprintf(" %C - >%のC " 、A、C)。
                   返します
                   } 
         ハン(A、C、B、N - 1 )。
         printf(" %C - >%のC " 、A、C)。
         ハン(B、C、A、N - 1 )。  
        
}             

 質問があれば、アイデアやコメントは以下の〜歓迎されています

おすすめ

転載: www.cnblogs.com/julyzqy/p/11730192.html