C++實現(xiàn)漢諾塔算法經(jīng)典實例
更新時間:2014年07月24日 11:46:35 投稿:shichen2014
這篇文章主要介紹了C++實現(xiàn)漢諾塔算法經(jīng)典實例,代碼簡潔高效,對于學(xué)習(xí)算法的朋友有一定的借鑒價值,需要的朋友可以參考下
本文所述為漢諾塔算法的C++代碼的經(jīng)典實現(xiàn)方法。
漢諾塔問題描述:3個柱為a、b、c,圓盤最初在a柱,借助b柱移到c柱。需要你指定圓盤數(shù)。
具體實現(xiàn)代碼如下:
#include <iostream>
using namespace std;
int times = 0; //全局變量,搬動次數(shù)
//第n個圓盤從x柱搬到z柱
void move(int n, char x, char z)
{
cout << "第" << ++times << "步: 將" << n << "號盤從" << x << "移到" << z << endl;
}
//將x柱上按直徑自上而下由小到大編號為1至n的n個圓盤按規(guī)則搬到z柱上。y用作輔助柱
void hanoi(int n, char x, char y, char z)
{
if (n == 1)
move(1, x, z); //將編號為1的圓盤從x移到z
else {
hanoi(n - 1, x, z, y); //將x上編號為1至n-1的圓盤移到y(tǒng),z作輔助柱
move(n, x, z); //將編號為n的圓盤從x移到z
hanoi(n - 1, y, x, z); //將y上編號為1至n-1的圓盤移到z,x作輔助柱
}
}
int main()
{
int n;
cout << "3個柱為a、b、c,圓盤最初在a柱,借助b柱移到c柱。請輸入圓盤數(shù):";
cin >> n;
hanoi(n, 'a', 'b', 'c');
system("pause");
return 0;
}
相關(guān)文章
C++學(xué)習(xí)之cstdbool和cstddef頭文件封裝源碼分析
這篇文章主要為大家介紹了C++學(xué)習(xí)之cstdbool和cstddef頭文件封裝源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Visual Studio Code配置C/C++開發(fā)環(huán)境的教程圖解
這篇文章主要介紹了Visual Studio Code配置C/C++開發(fā)環(huán)境的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

