CSP-J 2024 入门级 第一轮(初赛) 完善程序(2)

剩余时间:15:00
(汉诺塔问题)给定三根柱子,分别标记为 A、B 和 C。初始状态下,柱子A上有若干个圆盘,这些圆盘从上到下按从小到大的顺序排列。
任务是将这些圆盘全部移到柱子c上,且必须保持原有顺序不变。在移动过程中,需要遵守以不规则:
1.只能从一根柱子的顶部取出圆盘,并将其放入另一根柱子的顶部。
2.每次只能移动一个圆盘
3.小圆盘必须始终在大圆盘之上。
试补全程序
#include 
using namespace std;
void move(char src, char tgt) {
	cout << "从柱子" << src << "挪到柱子上" << tgt << endl;
}
void dfs(int i, char src, char tmp, char tgt) {
	if(i == ___(1)___) {
		move(___(2)___);
		return;
	}
	dfs(i-1, ___(3)___);
	move(src, tgt);
	dfs(___(5)___, ___(4)___);
}
int main() {
	int n;
	cin >> n;
	dfs(n, 'A', 'B', 'C');
}

0%