Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145473
  • 博文数量: 54
  • 博客积分: 2682
  • 博客等级: 少校
  • 技术积分: 580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 20:56
文章分类
文章存档

2012年(2)

2011年(10)

2010年(28)

2009年(14)

我的朋友

分类: Java

2009-12-02 16:35:27

好像觉得还蛮有意思的。
 
 

package hanoi;

public class HanoiTest {
    public HanoiTest(int n) {
        // hanoi(n, 1, 2, 3);

        hanoi(n, 1, 3);
    }

    void hanoi(int n, int start, int help, int end) {
        if (n == 1) {
            move(start, end);
            return;
        } else {
            hanoi(n - 1, start, end, help);
            move(start, end);
            hanoi(n - 1, help, start, end);
        }
    }

    void hanoi(int n, int start, int end) {
        if (n == 1) {
            move(start, end);
        } else {
            if (start == 1 && end == 2) {
                hanoi(n - 1, 1, 3);
                move(1, 2);
                hanoi(n - 1, 3, 2);
            } else if (start == 1 && end == 3) {
                hanoi(n - 1, 1, 2);
                move(1, 3);
                hanoi(n - 1, 2, 3);
            } else if (start == 2 && end == 1) {
                hanoi(n - 1, 2, 3);
                move(2, 1);
                hanoi(n - 1, 3, 1);
            } else if (start == 2 && end == 3) {
                hanoi(n - 1, 2, 1);
                move(2, 3);
                hanoi(n - 1, 1, 3);
            } else if (start == 3 && end == 1) {
                hanoi(n - 1, 3, 2);
                move(3, 1);
                hanoi(n - 1, 2, 1);
            } else if (start == 3 && end == 2) {
                hanoi(n - 1, 3, 1);
                move(3, 2);
                hanoi(n - 1, 1, 2);
            }
        }
    }

    void move(int start, int end) {
        System.out.println(start + "--->" + end);
    }

    public static void main(String[] args) {
        new HanoiTest(5);
    }
}


阅读(525) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~