分治策略實驗報告補充示例 漢諾塔實現

2021-06-30 16:38:57 字數 673 閱讀 5014

//漢諾塔求解**實現

/*介紹:漢諾塔問題是典型的分治演算法問題,首先我們來討論最基本的漢諾塔問題。

假設有n個圓盤,三根柱子,a,b,c,需要把n個盤子(從下往上按照大小順序摞著)

從a柱移動到c柱,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

解決辦法;

採用分治法,分而治之,把大問題化解成小問題。故可以把n個盤子看成n-1個盤子,

和第n個盤子,首先我們需要把n-1個盤子移動到b柱子上,然後把第n個盤子移動到c柱子上,

最後把n-1個盤子移動到c柱子上,這樣就用最少的移動次數完成了任務。

*//*

計算移動次數:

如果要計算一共移動了多少次,找出規律即可。

假設移動n個盤子需要移動f(n)次,所以把n-1個盤子移動到b柱子上,需要移動f(n-1)次,

然後把第n個盤子移動到c柱子上,需要移動1次,最後把n-1個盤子移動到c柱子上,需要

移動f(n-1)次,綜上所述,一共移動了 f(n) = 2 f(n-1) + 1 次

*/#include using namespace std;

void move(int n, char a, char b)

}int main()

return 0;

}

分治法迴圈賽實驗報告

include include using namespace std int calendar 100 100 日程表陣列 void gametable int k,int a 100 100 void printtable int k,int a 100 100 int main void ga...

實驗五實驗報告

系統架構圖 首先我在我的電腦裡建立了有名稱要求的資料夾,然後開啟android studio clone了我們的小組專案。此處因為已經clone過了,所以無法再把這個專案clone進去 進行編譯,執行,測試均正常 我在遊戲主介面載入了乙個toast,點選可以短暫地顯示我的學號資訊 首先在封面檔案裡我...

實驗六實驗報告

實驗結論 part1 結構體型別及程式設計應用 1.補足程式 include const int n 5 定義結構體型別struct student,並定義stu為其別名 typedef struct student stu 函式宣告 void input stu s,int n int findm...