#include <iostream>
#include <vector>

using namespace std;

// 定义一个全局变量,用于存储操作过程
vector<pair<int, string>> process;

// 递归函数,将第n个环放到框柄上
void putOn(int n) {
    // 如果n等于1,直接将环放到框柄上
    if (n == 1) {
        process.push_back(make_pair(n, "on"));
        return;
    }
    // 先将前n-1个环放到框柄上
    putOn(n - 1);
    // 将第n个环放到框柄上
    process.push_back(make_pair(n, "on"));
    // 再将前n-1个环取下
    putOff(n - 1);
}

// 递归函数,将第n个环取下
void putOff(int n) {
    // 如果n等于1,直接将环取下
    if (n == 1) {
        process.push_back(make_pair(n, "off"));
        return;
    }
    // 先将前n-1个环取下
    putOff(n - 1);
    // 再将第n个环取下
    process.push_back(make_pair(n, "off"));
    // 再将前n-1个环放回框柄上
    putOn(n - 1);
}

int main() {
    int n;
    cin >> n;

    // 将第n个环放到框柄上
    putOn(n);

    // 输出操作过程
    for (auto p : process) {
        cout << p.first << " " << p.second << endl;
    }

    return 0;
}
``

原文地址: http://www.cveoy.top/t/topic/iS6f 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录