#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
vector<string> result;
vector<int> stack;
vector<bool> visited;
void backtrack(int n, string current) {
if (current.size() == n) {
// 检查结果是否已存在,避免重复添加
if (find(result.begin(), result.end(), current) == result.end()) {
result.push_back(current);
}
return;
}
if (!stack.empty()) {
int top = stack.back();
stack.pop_back();
backtrack(n, current + to_string(top));
stack.push_back(top);
}
for (int i = 1; i <= n; ++i) {
if (!visited[i]) {
visited[i] = true;
stack.push_back(i);
backtrack(n, current);
stack.pop_back();
visited[i] = false;
}
}
}
void clacExitMode(int n) {
visited.resize(n + 1, false);
backtrack(n, "");
sort(result.begin(), result.end());
for (const string& s : result) {
cout << s << " ";
}
cout << endl;
}
int main() {
int n = 3;
clacExitMode(n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHN0cmluZz4gcmVzdWx0Owp2ZWN0b3I8aW50PiBzdGFjazsKdmVjdG9yPGJvb2w+IHZpc2l0ZWQ7Cgp2b2lkIGJhY2t0cmFjayhpbnQgbiwgc3RyaW5nIGN1cnJlbnQpIHsKICAgIGlmIChjdXJyZW50LnNpemUoKSA9PSBuKSB7CiAgICAgICAgLy8g5qOA5p+l57uT5p6c5piv5ZCm5bey5a2Y5Zyo77yM6YG/5YWN6YeN5aSN5re75YqgCiAgICAgICAgaWYgKGZpbmQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgY3VycmVudCkgPT0gcmVzdWx0LmVuZCgpKSB7CiAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soY3VycmVudCk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoIXN0YWNrLmVtcHR5KCkpIHsKICAgICAgICBpbnQgdG9wID0gc3RhY2suYmFjaygpOwogICAgICAgIHN0YWNrLnBvcF9iYWNrKCk7CiAgICAgICAgYmFja3RyYWNrKG4sIGN1cnJlbnQgKyB0b19zdHJpbmcodG9wKSk7CiAgICAgICAgc3RhY2sucHVzaF9iYWNrKHRvcCk7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgaWYgKCF2aXNpdGVkW2ldKSB7CiAgICAgICAgICAgIHZpc2l0ZWRbaV0gPSB0cnVlOwogICAgICAgICAgICBzdGFjay5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgIGJhY2t0cmFjayhuLCBjdXJyZW50KTsKICAgICAgICAgICAgc3RhY2sucG9wX2JhY2soKTsKICAgICAgICAgICAgdmlzaXRlZFtpXSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBjbGFjRXhpdE1vZGUoaW50IG4pIHsKICAgIHZpc2l0ZWQucmVzaXplKG4gKyAxLCBmYWxzZSk7CiAgICBiYWNrdHJhY2sobiwgIiIpOwogICAgc29ydChyZXN1bHQuYmVnaW4oKSwgcmVzdWx0LmVuZCgpKTsKICAgIGZvciAoY29uc3Qgc3RyaW5nJiBzIDogcmVzdWx0KSB7CiAgICAgICAgY291dCA8PCBzIDw8ICIgIjsKICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiA9IDM7CiAgICBjbGFjRXhpdE1vZGUobik7CiAgICByZXR1cm4gMDsKfQ==