Javaの例 - ハノイ塔のアルゴリズム

黄舟
リリース: 2017-02-07 10:56:15
オリジナル
1335 人が閲覧しました

ハノイの塔 (ハノイの塔としても知られています) は、インドの古代伝説に由来する知育玩具です。ブラフマーが世界を創造したとき、1本の柱の上に64枚の金の円盤を下から上に大きさ順に積み重ねた3本のダイヤモンドの柱を作りました。ブラフマーはバラモンに、別の柱の上にある円盤を下から大きい順に並べ替えるよう命じました。そして、小さな円盤では円盤を拡大することはできず、3本の柱の間で一度に移動できる円盤は1枚だけであると規定されています。

その後、この伝説はハノイの塔ゲームに発展し、ゲームプレイは次のとおりです:

1 3 つのポール A、B、C があります。ポール A には複数の皿があります

2. 一度に 1 つの皿を移動し、小さい皿は大きい皿の上にのみ積み重ねることができます

3. すべての皿をポール A からポール C に移動します

次のとおりです。例は、ハノイの塔のアルゴリズムの実装を示しています。

/*
 author by w3cschool.cc
 MainClass.java
 */
public class MainClass {
   public static void main(String[] args) {
      int nDisks = 3;
      doTowers(nDisks, 'A', 'B', 'C');
   }
   public static void doTowers(int topN, char from,
   char inter, char to) {
      if (topN == 1){
         System.out.println("Disk 1 from "
         + from + " to " + to);
      }else {
         doTowers(topN - 1, from, to, inter);
         System.out.println("Disk "
         + topN + " from " + from + " to " + to);
         doTowers(topN - 1, inter, from, to);
      }
   }
}
ログイン後にコピー

上記のコードを実行した出力結果は次のとおりです。

Disk 1 from A to C
Disk 2 from A to B
Disk 1 from C to B
Disk 3 from A to C
Disk 1 from B to A
Disk 2 from B to C
Disk 1 from A to C
ログイン後にコピー


上記は、Java の例の内容です - ハノイの塔アルゴリズムの詳細については、 PHP 中国語 Web サイト (www.php.cn) にご注意ください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!