【字典序】 出栈序列
传送门
题意
数字\(1\sim n\)依次进栈,求字典序前20的出栈序列
数据范围
\(1\leq n \leq 20\)
题解
dfs,栈不空就出栈保证字典序列
Code
#include<bits/stdc++.h>
using namespace std;
#define rep(i,a,n) for(int i=a;i<n;i++)
#define pb push_back
const int N=25;
vector<int>a;
int stk[N],num;
int n;
int cnt=20,now=1;
void dfs(){
if(!cnt) return;
if(a.size()==n){
cnt--;
rep(i,0,n) printf("%d",a[i]);
puts("");return;
}
if(num){
a.pb(stk[num]);
num--;
dfs();
stk[++num]=a.back();
a.pop_back();
}
if(now<=n){
stk[++num]=now;
now++;
dfs();
now--;
num--;
}
}
int main(){
scanf("%d",&n);
dfs();
}

浙公网安备 33010602011771号