ハノイの(再帰的なマシンで)タワーズ

問題の説明:

ハノイの塔は、以下に示されるように、3つの柱の基部からなるプレート上に配置数によって古代の問題、プレートが異なる全ての直径です。そして、それだけでパイロン上に置くことができるように、プレートは、中央の穴を持っており、すべてのプレートが座席に始まりに過ぎません、パズルの目標は、パイロンの周りから食器を持つことである、パイロンCへの移行、時間がトレイを移動させることができ、そしてトレイがそれよりも小さい任意のプレート上に配置することができるではありません、


リンクします。https://blog.csdn.net/qq_40688338/article/details/84837816

これは明らかに、再帰的なアルゴリズムです。

単におおよそNの皿3つのステップに分けハノイの塔:
中間体パイロンを介して1、N-1は、パイロンBへ初期ターゲットCパイロンのプレートです。

2、パイロンCからターゲットに直接プレート最大下パイロン。
図3に示すように、パイロンBのn-1個のプレートの中間目標パイロンcでパイロン上に置か。

 

コードシェア:

パッケージcom.ethjava。

ハノイの//再帰タワーズ
/// **
ハノイ問題の// *タワー
// *
// * @param皿プレート番号(また、名前を表します)
最初のパイロンから// * @param
// * @paramの派遣会社のパイロン
パイロンをターゲットに// * @param
// * /

パブリッククラスhahuota {
    パブリック静的無効メイン(文字列[] args){

        hannuota(3、 ""、 "C"、 "B")。
    }

    パブリック静的ボイドhannuota(INT皿、文字列から文字列TEMP、文字列){
        IF(皿== 1){
            System.out.println(+ +から+に「に」「唯一のプレートから、存在します」)。
        }そうしないと{
                hannuota(皿 -  1、から、TEMP、に);
                System.out.println(+する「に対して」+から+「プレートから移動」)。
                hannuota(皿 -  1、TEMP、へ、から)。

            }
        }

    }


/ *
パブリッククラスHanoiTower {
    パブリック静的ボイドmoveDish(INTレベル、よりチャー、チャー間にCHAR){
        IF(レベル== 1){
            System.out.println(「から」+ +「移動プレート」から+レベル+「数に」+へ)。
        } そうしないと {
            moveDish(レベル -  1、から、に、インター)。
            System.out.println(「から」+ +「移動プレート」から+レベル+「数に」+へ)。
            moveDish(レベル -  1、インターへ、から)。
        }
    }

    パブリック静的無効メイン(文字列[] args){
        int型nDisks = 3;
        moveDish(nDisks、 'A'、 'B'、 'C​​')。
    }
}
* /

 

結果:

Cへの唯一のプレート
から移動プレート- 、Bは
BのCから、唯一のプレートであるが
、からの、C皿を動かす
Bからの唯一のプレート、
移動プレートB、からに、C
のみプレートからCへ

 

 

公開された45元の記事 ウォンの賞賛8 ビュー5858

おすすめ

転載: blog.csdn.net/wenyunick/article/details/103561591