第二章 :查詢與排序-------遞迴經典問題——漢諾塔問題
遞迴經典問題——漢諾塔問題:
1-N從A移動到B,C作為輔助:
等價於:
1、1~N-1從A移動到C,A作為源,B作為輔助;
2、把N從A移動到B;
3、1~N-1從C移動到B,A作為輔助。
#include<iostream>
using namespace std;
/*
**將N個盤子從source移動到target的路徑列印
**
**N: 初始的N個從小到大的盤子,N為最大編號
**from: 原始柱子
**to: 目標柱子
** help: 輔助柱子
*/
void printHanoiTower(int N,string from,string to,string help){
if(N==1){
cout<<"move "<<N<<" from "<<from<<" to "<<to<<endl;
return;
}
printHanoiTower(N-1,from,help,to); //先把前N-1個盤子挪到輔助空間去
cout<<"move "<<N<<" from "<<from<<" to "<<to<<endl; //N可以順利地到達target
printHanoiTower(N-1,help,to,from); //讓N-1從輔助空間挪到目標空間
}
int main(){
printHanoiTower(3,"A","B","C");
return 0;
}
注:將前n-1個盤子看做整體。
結果:
相關文章
- 化繁為簡 經典的漢諾塔遞迴問題 in Java遞迴Java
- 遞迴實現漢諾塔問題遞迴
- 經典遞迴解決漢諾塔!遞迴
- python3:遞迴解漢諾塔問題Python遞迴
- C#中漢諾塔問題的遞迴解法C#遞迴
- 第二章 :查詢與排序---------遞迴、查詢與排序補充排序遞迴
- Python實現:漢諾塔問題Python
- 第二章 :查詢與排序-------二分查詢的遞迴解法排序遞迴
- 第二章 :查詢與排序-------遞迴形式進行插入排序排序遞迴
- c++遞迴與迭代實現漢諾塔C++遞迴
- 百練OJ:4147:漢諾塔問題(Hanoi)——python實現漢諾塔Python
- 漢諾塔非遞迴演算法遞迴演算法
- 漢諾塔非遞迴棧程式碼遞迴
- 第二章 :查詢與排序-------2.16 解題實戰_小白上樓梯(遞迴設計)排序遞迴
- js解決漢諾塔問題程式碼例項JS
- 分頁查詢的排序問題排序
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- js漢諾塔問題解決方法程式碼例項JS
- 分頁查詢的排序問題(二)排序
- 遞迴路徑問題遞迴
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- LeetCode 90 | 經典遞迴問題,求出所有不重複的子集IILeetCode遞迴
- 從漢諾塔遊戲理解python遞迴函式遊戲Python遞迴函式
- 第二章 :查詢與排序-------希爾排序排序
- poj 1182 並查集經典問題並查集
- 第二章 :查詢與排序-------2.19題目詳解_找出最長連續遞增子序列排序
- 遞迴解決全排列問題遞迴
- 分頁及查詢引數傳遞問題分享
- [演算法練習及思路-程式設計師面試金典(Java解法)]No46.漢諾塔問題演算法程式設計師面試Java
- 經典問題 2 —— 動態不包含區間與點完美匹配問題
- JavaScript閉包與變數的經典問題JavaScript變數
- iOS 演算法之排序、查詢、遞迴iOS演算法排序遞迴
- sql 模糊查詢問題SQL
- Xilinx問題查詢
- 斷號查詢問題
- Oracle分頁查詢中排序與效率問題解決方法詳解Oracle排序
- 遞迴思想----解決飲料問題遞迴
- Josephus問題解決方法五(遞迴)遞迴