题解 | 火车进站
火车进站
https://www.nowcoder.com/practice/97ba57c35e9f4749826dc3befaeae109
#include <iostream>
#include<vector>
#include <stack>
#include <algorithm>
#include <numeric>
using namespace std;
int n;
int id[11];
vector<int> arr;
bool cmp() {
stack<int> s;
int j = 0;
for (int i = 0; i < n; ++i) {
s.push(id[i]);
while (!s.empty() && s.top() == arr[j]) {
s.pop();
j++;
}
}
return s.empty() && j == n;
}
int main() {
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> id[i];
}
arr.resize(n);
iota(arr.begin(),arr.end(),1);
do {
if (cmp()) {
cout << arr[0];
for (int i = 1; i < n; ++i)
cout << ' ' << arr[i];
cout << endl;
}
} while (next_permutation(arr.begin(),arr.end()));
return 0;
}
// 64 位输出请用 printf("%lld")


