漢諾塔(益智玩具)
漢諾塔:漢諾塔(又稱河內塔)問題是源於印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞着64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。 - -摘抄於百度百科
那么我們怎么玩呢?
其實是有規律性的游戲,並且滿足一定的遞歸性。
我們把放盒子的柱子設置為x,其余兩根分別設置為y,z,要想讓盒子從x移動到z上,並且成金字塔形擺放
第一步:如果只有一個的時候,直接從x移動到z上即可,如果n個呢,那先將這n-1個借助z移動到y上
第二步:然后將最后一個直接移動到z上,這最后一個就是最大的了
第三步:將在y的的n-1個盒子借助x移動到z上就可以了。
可能聽我這么扯淡沒那么明白,去游戲里玩玩就懂了,不管多少個都一樣玩。
/*本實例是一個游戲的攻略具體玩法可以訪問:http://www.4399.com/flash/109504_1.htm*/
打上代碼
1 package game; 2 3 /*本實例是一個游戲的攻略具體玩法可以訪問:http://www.4399.com/flash/109504_1.htm*/ 4 public class Demo { 5 6 public static void main(String[] args) { 7 move(3, 'x', 'y', 'z'); 8 } 910/* 表示n個盤子從 x 借助 y 移動到 z */11publicstaticvoid move(int n, char x, char y, char z) { 12if (n == 1) // 當只有一個盤子的時候,我們直接從x移動到z13 System.out.println(x + "--->" + z); 14else { 15 move(n - 1, x, z, y); // 第n+1個盤子從x借助z移動到y16 System.out.println(x + "--->" + z); // 第n個盤子從x移動到z17 move(n - 1, y, x, z); // 第n+1個盤子從y借助x移動到z18 } 19 } 2021 }
完畢 - . -