```cpp
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1005;
int n,a[MAXN],b[MAXN],c[MAXN*2],cnt,mul;
stack<int>s1,s2;
void dfs(int k)
{
if(mul==n)
{
bool flag=1;
for(int i=1;i<=n;i++)
if(b[i]!=i)
{
flag=0;
break;
}
if(flag)
{
for(int i=1;i<=k;i++)
cout<<char(c[i]+'a'-1)<<" ";
cout<<endl;
exit(0);
}
}
cnt++;
c[k]=1;
s1.push(a[cnt]);
dfs(k+1);
s1.pop();
cnt--;
mul++;
if(!s1.empty())
{
c[k]=2;
b[mul]=s1.top();
s1.pop();
dfs(k+1);
s1.push(b[mul]);
}
mul--;
cnt++;
c[k]=3;
s2.push(a[cnt]);
dfs(k+1);
s2.pop();
cnt--;
mul++;
if(!s2.empty())
{
c[k]=4;
b[mul]=s2.top();
s2.pop();
dfs(k+1);
s2.push(b[mul]);
}
mul--;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(i>=3&&a[i]>a[i-1]&&a[i-1]>a[i-2]&&a[i-2]!=1)
{
cout<<0<<endl;
return 0;
}
}
dfs(1);
return 0;
}
```
改了一部分,仍然不对
by 二叉苹果树 @ 2022-09-03 10:07:37
```cpp
#include<bits/stdc++.h>
using namespace std;
const int N=1005,M=1e6+5;
int ver[M],Next[M],head[M],tot;
void add(int u,int v)
{
ver[++tot]=v,Next[tot]=head[u],head[u]=tot;
}
int a[N],k[N];
int fail,vis[N];
int st1[N],st2[N],t1,t2;
void dfs(int x,int c)
{
vis[x]=c;
for(int i=head[x];i;i=Next[i])
{
if(!vis[ver[i]])dfs(ver[i],3-c);
else if(vis[ver[i]]==c)fail=1;
}
}
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
int MIN=1e8;
for(int i=n;i;i--)k[i]=MIN,MIN=min(MIN,a[i]);
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(a[i]<a[j]&&a[i]>k[j])
add(i,j),add(j,i);
for(int i=1;i<=n;i++)if(!vis[i])dfs(i,1);
if(fail){printf("%d",0);return 0;}
int now=1;
st1[0]=st2[0]=1e8;
for(int i=1;i<=n;i++)
if(vis[i]==1)
{
while(st1[t1]==now)
t1--,printf("%c ",'b'),now++;
if(a[i]>st1[t1])while(st2[t2]==now)t2--,printf("%c ",'d'),now++;
while(st1[t1]==now)
t1--,printf("%c ",'b'),now++;
st1[++t1]=a[i],printf("%c ",'a');
}
else
{
while(1)
if(st1[t1]==now)
t1--,printf("%c ",'b'),now++;
else if(st2[t2]==now)
t2--,printf("%c ",'d'),now++;
else break;
st2[++t2]=a[i],printf("%c ",'c');
}
while(1)
if(st1[t1]==now)
t1--,printf("%c ",'b'),now++;
else if(st2[t2]==now)
t2--,printf("%c ",'d'),now++;
else break;
return 0;
}
```
@[Binary_Apple_Tree](/user/270854)
by 已注销!^sZA2#G @ 2022-09-03 10:09:59