1. 程式人生 > 其它 >程式設計與演算法(二)演算法基礎-郭煒 2.1.1 漢諾塔問題

程式設計與演算法(二)演算法基礎-郭煒 2.1.1 漢諾塔問題

技術標籤:演算法學習演算法資料結構c++

程式設計與演算法(二)演算法基礎-郭煒 2.1.1 漢諾塔問題

古代有一個梵塔﹐塔內有三個座A、B、C,A座上有64個盤子﹐盤子大小不等,大的在下﹐小的在上(如圖)。有一個和尚想把這64個盤子從A座移到c座﹐但每次只能允許移動一個盤子﹐並且在移動過程中﹐3個座上的盤子始終保持大盤在下﹐小盤在上。在移動過程中可以利用B座﹐要求輸出移動的步驟。
在這裡插入圖片描述

#include <iostream>
using namespace std;
void Hanoi(int n,char src,char mid,char dest)
//將src座上的n個盤子,以mid座為中轉,移動dest座 
{ if(n == 1) //只需移動一個盤子 { cout << src << "->" << dest << endl; //直接將盤子從src移動到dest即可 return ; //遞迴終止 } Hanoi(n - 1,src,dest,mid); //先將n - 1個盤子從src移動到mid cout << src << "->" << dest << endl; //再將一個盤子從src移動到dest Hanoi(n - 1
,mid,src,dest); //最後將n - 1個盤子從mid移動到dest return ; } int main() { int n; cin >> n; Hanoi(n,'A','B','C'); return 0; }