SQL 漢諾塔
SQL 漢諾塔 自己原文公眾號: https://mp.weixin.qq.com/s/0zh6zm_BoUnalAqvVD6qDg
上週我釋出了一個SQL寫的海盜分金子的(那個SQL不是我寫的,我只是轉述)。同樣今天的這個也不是我寫的。
背景是這樣的一個遊戲(這個遊戲我是不會玩,但是見過),沒想到我玩都不會玩的遊戲,有人用SQL寫了。
漢諾塔是源自印度神話裡的玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按大小順序摞著64片黃金圓盤。
大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。傳說在印度,有這麼一個古老的傳說:在世界中心貝拿勒斯(在印度北部)的聖廟裡,一塊黃銅板上插著三根寶石針。印度教的主神梵天在創造世界的時候,在其中一根針上從下到上地穿好了由大到小的64片金片,這就是所謂的漢諾塔。不論白天黑夜,總有一個僧侶在按照下面的法則移動這些金片:一次只移動一片,不管在哪根針上,小片必須在大片上面。僧侶們預言,當所有的金片都從梵天穿好的那根針上移到另外一根針上時,世界就將在一聲霹靂中消滅,而梵塔、廟宇和眾生也都將同歸於盡。
題目要求
題目要求:用SQL找出最少移動次數,並且給出一種移法。
例子:3個圓盤
輸入:N=圓盤個數
每個步驟表示將一個柱子上的最上面一個圓盤移到另一個柱子。比如1->2 就是將1號柱最上方的圓盤放到2號柱的最上方。
假設有N個盤,最底下的N號盤在移動的時候,目標的柱子一定是空的。所以所有的其他N-1個盤子必定全部在另一柱子上。
把N號盤移過去之後,N-1要疊加到這個盤上面,和剛才移動N-1個盤子的方法是一樣的,只不過柱子的編號不同。
用遞迴SQL和MODEL都可以輕易寫出來。
SQL解答
每個步驟表示將一個柱子上的最上面一個圓盤移到另一個柱子。比如1->2 就是將1號柱最上方的圓盤放到2號柱的最上方。
假設有N個盤,最底下的N號盤在移動的時候,目標的柱子一定是空的。所以所有的其他N-1個盤子必定全部在另一柱子上。
把N號盤移過去之後,N-1要疊加到這個盤上面,和剛才移動N-1個盤子的方法是一樣的,只不過柱子的編號不同。
用遞迴SQL和MODEL都可以輕易寫出來。
SQL解答
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847127/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 漢諾塔詳解
- 漢諾塔-PythonPython
- ACM 漢諾塔(三)ACM
- 漢諾塔的實現
- 漢諾塔通項公式公式
- 漢諾塔和遞迴遞迴
- 百練OJ:4147:漢諾塔問題(Hanoi)——python實現漢諾塔Python
- 奇怪的漢諾塔 - 題解
- 小知識系列(3):Hanoi塔(漢諾塔,河內塔)
- 漢諾塔遊戲《演算法很美》遊戲演算法
- hanoi漢諾塔C++實現C++
- 漢諾塔演算法演示1.0演算法
- PHP實現漢諾塔演算法PHP演算法
- 經典遞迴解決漢諾塔!遞迴
- Python實現:漢諾塔問題Python
- 漢諾塔非遞迴演算法遞迴演算法
- 漢諾塔(hanoi) C語言實現C語言
- 遞迴實現漢諾塔問題遞迴
- 漢諾塔非遞迴棧程式碼遞迴
- 【YbtOJ高效進階 遞推-2】奇怪漢諾塔
- c++遞迴與迭代實現漢諾塔C++遞迴
- 漢諾塔移動步數的計算 (轉)
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- 從漢諾塔遊戲理解python遞迴函式遊戲Python遞迴函式
- python3:遞迴解漢諾塔問題Python遞迴
- js解決漢諾塔問題程式碼例項JS
- C#中漢諾塔問題的遞迴解法C#遞迴
- js漢諾塔問題解決方法程式碼例項JS
- 【分治演算法】歸併排序,快速排序和漢諾塔演算法排序
- 化繁為簡 經典的漢諾塔遞迴問題 in Java遞迴Java
- HT for Web 3D遊戲設計設計--漢諾塔(Towers of Hanoi)Web3D遊戲設計
- 基於HTML5的WebGL設計漢諾塔3D遊戲HTMLWeb3D遊戲
- 漢諾塔與二進位制、滿二叉樹的千絲萬縷二叉樹
- 第二章 :查詢與排序-------遞迴經典問題——漢諾塔問題排序遞迴
- [演算法練習及思路-程式設計師面試金典(Java解法)]No46.漢諾塔問題演算法程式設計師面試Java
- JAVA漢諾塔遞迴 之SpringCloud企業分散式微服務雲架構快速開發平臺Java遞迴SpringGCCloud分散式微服務架構
- 寶塔使用
- 寶塔後臺解決寶塔相關問題