面試題 08 06 漢諾塔問題

2021-10-08 18:57:32 字數 885 閱讀 3971

在經典漢諾塔問題中,有 3 根柱子及 n 個不同大小的穿孔圓盤,盤子可以滑入任意一根柱子。一開始,所有盤子自上而下按公升序依次套在第一根柱子上(即每乙個盤子只能放在更大的盤子上面)。移動圓盤時受到以下限制:

(1) 每次只能移動乙個盤子;

(2) 盤子只能從柱子頂端滑出移到下一根柱子;

(3) 盤子只能疊在比它大的盤子上。

請編寫程式,用棧將所有盤子從第一根柱子移到最後一根柱子。

你需要原地修改棧。

示例1:

輸入:a = [2, 1, 0], b = , c =

輸出:c = [2, 1, 0]

示例2:

輸入:a = [1, 0], b = , c =

輸出:c = [1, 0]

a中盤子的數目不大於14個。

class

solution

void

hano

(vector<

int>

& a,vector<

int>

& b,vector<

int>

& c,

int n)

hano

(a,c,b,n-1)

;shift

(a,c)

;hano

(b,a,c,n-1)

;}void

hanota

(vector<

int>

& a, vector<

int>

& b, vector<

int>

& c)

};

時間複雜度:o(2n )。一共需要移動的次數。

空間複雜度:o(1)。

面試題 08 06 漢諾塔問題

面試題 08.06.漢諾塔問題 簡單題 遞迴 在經典漢諾塔問題中,有 3 根柱子及 n 個不同大小的穿孔圓盤,盤子可以滑入任意一根柱子。一開始,所有盤子自上而下按公升序依次套在第一根柱子上 即每乙個盤子只能放在更大的盤子上面 移動圓盤時受到以下限制 1 每次只能移動乙個盤子 2 盤子只能從柱子頂端滑...

面試題 08 06 漢諾塔問題

在經典漢諾塔問題中,有 3 根柱子及 n 個不同大小的穿孔圓盤,盤子可以滑入任意一根柱子。一開始,所有盤子自上而下按公升序依次套在第一根柱子上 即每乙個盤子只能放在更大的盤子上面 移動圓盤時受到以下限制 1 每次只能移動乙個盤子 2 盤子只能從柱子頂端滑出移到下一根柱子 3 盤子只能疊在比它大的盤子...

面試題 08 06 漢諾塔問題

面試題 08.06.漢諾塔問題 思路參考 相傳在很久以前,有個寺廟裡的幾個和尚整天不停地移動著 64 個盤子,日復一日,年復一年。據說,當 64 個盤子全部移完的那一天就是世界末日.有 a,b,c 三根柱子,a 上面有 n 個盤子,我們想把 a 上面的盤子移動到 c 上,但是要滿足以下三個條件 這是...