题解 | 火车进站
火车进站
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")