// TowersOfHanoi.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <chrono>
void towersOfHanoi(int n, int t1, int t2, int t3) { //将t1上所有盘移到t2
if (n > 0) {
towersOfHanoi(n - 1, t1, t3, t2); //为了将t1上最大的盘移到t2,必须将t1上n-1个盘,移到t3
std::cout << "Move top disk from tower " << t1 << " to top of tower " << t2 << std::endl;
towersOfHanoi(n - 1, t3, t2, t1); //将t3上n-1个盘,通过t1移至t2上
}
return;
}
int main()
{
auto start = std::chrono::steady_clock::now();
std::cout << "Enter the disk number of tower 1" << std::endl;
int diskNum;
std::cin >> diskNum;
towersOfHanoi(diskNum, 1, 2, 3);
auto end = std::chrono::steady_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";
}
汉诺塔问题的递归实现
最新推荐文章于 2023-11-28 20:59:26 发布