>  기사  >  Java  >  자바 예 - 하노이 타워 알고리즘

자바 예 - 하노이 타워 알고리즘

黄舟
黄舟원래의
2017-02-07 10:56:151375검색

하노이 타워(일명 하노이 타워)는 인도의 고대 전설에서 파생된 교육용 장난감입니다. 브라흐마는 세상을 창조했을 때 세 개의 다이아몬드 기둥을 만들었고, 한 기둥에는 64개의 금 원반이 아래에서 위로 크기대로 쌓여 있었습니다. 브라흐마는 브라만에게 디스크를 바닥부터 크기 순서대로 다른 기둥에 재배치하라고 명령했습니다. 또한 작은 원반에서는 원반을 확대할 수 없으며 세 개의 기둥 사이에서 한 번에 하나의 원반만 이동할 수 있다고 규정되어 있습니다.

이후 이 전설은 하노이탑 게임으로 발전했으며, 게임 플레이는 다음과 같습니다.

1 A, B, C 세 개의 극이 있습니다. A 기둥에는 여러 개의 접시가 있습니다

2. 한 번에 하나씩 접시를 옮기고, 작은 접시는 큰 접시 위에만 쌓을 수 있습니다

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


위는 자바 예시입니다. - 하노이탑 알고리즘의 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.