#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std; //70 vector<int> nums; vector<string> res; int n; void func(int idx, string temp, vector<int> myStack) { if (idx == n) { //火车已经入站完毕,将站台清空即可 while (!myStack.empty()) { temp = temp + to_string(myStack.back()) + ' '; myStack.pop_back(); } temp.pop_back(); res.emplace_back(temp); } else { //火车还未入站完毕,下一辆入站的火车是nums[idx] //若火车站不为空,可以选择出栈,并进入下一层 //可以选择入站,并进入下一层 if (!myStack.empty()) { int tt = myStack.back(); myStack.pop_back(); func(idx, temp + to_string(tt) + ' ', myStack); myStack.push_back(tt); } myStack.push_back(nums[idx]); func(idx + 1, temp, myStack); } } int main() { cin >> n; nums = vector<int>(n); for (int i = 0; i < n; i++) cin >> nums[i]; vector<int> myStack; func(0, "", myStack); sort(res.begin(), res.end()); for (string& s : res) cout << s << '\n'; return 0; } // 64 位输出请用 printf("%lld")