JAVA經典題目彙總

蟄伏神獸發表於2011-02-28

轉 :http://bea.javaeye.com/blog/166344

 

 

1  Fibonacci 

Fibonacci為1200年代的歐洲數學家,在他的著作中曾經提到:若有一隻兔子每個月生一隻小兔子,一個月後小兔子也開始生產。起初只有一隻兔子,一個月後就有兩隻兔子,兩個月後有三隻兔子,三個月後有五隻兔子(小兔子投入生產)…… 
這就是Fibonacci數列,一般習慣稱之為費式數列,例如:1,1,2,3,5,8,13,21,34,55,89,…… 

 

java程式碼:

 

 

 

2   巴斯卡(Pascal) 

三角形基本上就是在解nCr ,因為三角形上的每一個數字各對應一個nCr ,其中n為row,而r為colnmu

 

java程式碼: 

 

 

3  ThreeColorFlags 


ThreeColorFlags問題最早由E.W.Dijkstra所提出,塔所使用的用語為Dutch Nation Flag(Dijkstra為荷蘭人),而多數的作者則使用Three-Color Flag來說明。 

假設有一條繩子,上面有紅,白,藍三種顏色的旗子,起初繩子上的旗子顏色並沒有順序,您希望將之分類,並排列藍,白,紅的順序,要如何移動次數才會最少,注意您只能在繩子上進行這個動作,而且一次只能調換兩個旗子。

 

java程式碼:

 

 

4 Mouse 


Mouse走迷宮是迴圈求解的基本型別,我們在二維陣列中用2來表示迷宮的牆壁,使用1來表示老鼠的行走路徑,並用程式求出從入口到出口的距離。

 

java程式碼:

 

 

 

5 Knight tour 


騎士遊戲,在十八世紀倍受數學家與拼圖迷的注意,騎士的走法為西洋棋的走發,騎士可以由任何一個位置出發,它要如何走完所有的位置。

 

java程式碼: 

 

 

 

6 Queen 


西洋棋中的皇后可以直線前進,吃掉遇到的所有棋子,如果棋盤上有八個皇后,則這八個皇后如何相安無事的放置在棋盤上?

 

java程式碼: 

 

 


7  Coins 


現在有八枚銀幣abcdefg,已知其中一枚是假幣,其重量不同於真幣,但不知道是輕還是重,如何用天平以最小的比較次數決定出那個是假幣,並得知假幣是比真幣輕還是重。 

 

java程式碼:

 

 

 

8  Life game 


生命遊戲,為1970年英國數學家J.H.Conway所提出,某一細胞的鄰居包括上,下,左,右,左上,左下,右上與右下相鄰的細胞,遊戲規則如下: 

1,孤單死亡:如果細胞的鄰居小於一個,則該細胞在下一個狀態死亡。 

2,擁擠死亡:如果細胞的鄰居在四個以上,則該細胞在下一個狀態死亡。 

3,穩定:如果細胞的鄰居為兩個或三個,則該細胞在下一個狀態穩定。 

4,復活:如果某位置原無細胞存活,而該位置的鄰居為三個,則該位置將復活一個細胞。 

 

java程式碼:

 

 

 

 

9  String Match 


現在的一些高階程式語言對於字串的處理支援越來越大,不過字串搜尋本身仍是值得探討的課題,在這裡以Boyer Moore法來說明如何進行字串說明,這個方法速度快且容易理解。 

 

java程式碼:

 

 

 

10  Kanpsack Problem 


假設一個揹包的負重最大可達8公斤,而希望在揹包內放置負重範圍你價值最高的物品。

 

java程式碼:

 

 

 

 

11  Towers of Hanoi 

河內之塔(Towers of Hanoi)是法國人M.Claus(Lucas)於1883年從泰國帶至法國的,河內為越戰時北越的首都,即現在的胡志明市;1883年法國數學家 Edouard Lucas曾提及這個故事,據說創世紀時Benares有一座波羅教塔,是由三支鑽石棒(Pag)所支撐,開始時神在第一根棒上放置64個由上至下依由小至大排列的金盤(Disc),並命令僧侶將所有的金盤從第一根石棒移至第三根石棒,且搬運過程中遵守大盤子在小盤子之下的原則,若每日僅搬一個盤子,則當盤子全數搬運完畢之時,此塔將損毀,而也就是世界末日來臨之時。

 

java程式碼:

 

 

 

12  Hanoi2Colors 


Hanoi2Colors是由河內塔演變而來的一種演算法。

 

java程式碼:

 

 

 

 

相關文章