文章

13

粉丝

168

获赞

13

访问

16.2k

头像
优化递归板子
P1185 中国矿业大学/北京大学机考题
发布于2023年6月22日 11:42
阅读数 1.2k

#include <bits/stdc++.h>
#define rep(i, s, e) for (int i = s; i < e; i++)
using namespace std;

string s; // 输入的字符串
vector<bool> used; // 标记某个字符是否已经被使用

// 输出当前字符串的全排列
void dfs(string cur) {
    if (cur.size() == s.size()) {
        cout << cur << endl;
        return;
    }
    // 遍历每个字符,如果该字符还未被使用,则将其加入当前字符串中并继续递归
    rep(i, 0, s.size()) {
        if (!used[i]) {
            used[i] = true;
            dfs(cur + s[i]); //注意这里的参数
            used[i] = false;
        }
    }
}

int main() {
    getline(cin, s); // 输入字符串
    used.resize(s.size(), false); // 初始化标记数组
    dfs("");
    return 0;
}
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发