課後習題4.9 Hanoi(漢諾)塔問題。這是一個經典的數學問題:古代有一個梵塔,塔內有3個座A,B,C,開始時A座上有64個盤子,盤子大小不等,大的在下,小的在上(見圖4.16)。有一個老和尚想把這

AKK188888881發表於2020-10-24

課後習題4.9 Hanoi(漢諾)塔問題。這是一個經典的數學問題:古代有一個梵塔,塔內有3個座A,B,C,開始時A座上有64個盤子,盤子大小不等,大的在下,小的在上(見圖4.16)。有一個老和尚想把這64個盤子從A座移到C座,但每次只允許移動一個盤,且在移動過程中3個座上都始終保持大盤在下,小盤在上。在移動過程中可以利用B座,要求程式設計序列印移出移動的步驟。

#include <iostream>
using namespace std;

int main()
{
	void hanoi(int n, char one, char two, char three);
	int m;
	cout << "input the number of diskes:";
	cin >> m;
	cout << "The steps of moving " << m << " disks:" << endl;
	hanoi(m, 'A', 'B', 'C');
	return 0;
}

void hanoi(int n, char one, char two, char three)
//將n個盤從one座藉助two座,移到three座
{
	void move(char x, char y);
	if (n == 1)
		move(one, three);
	else
	{
		hanoi(n - 1, one, three, two);
		move(one, three);
		hanoi(n - 1, two, one, three);
	}
}

void move(char x, char y)
{
	cout << x << "-->" << y << endl;
}

相關文章