比赛 |
20120418s |
评测结果 |
RRRRRRRR |
题目名称 |
山海经 |
最终得分 |
0 |
用户昵称 |
苏轼 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2012-04-18 11:19:28 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct hehe
{
int a[30];
int k[30];
int ans;
}q[100000];
int n,tou,wei;
int w[30];
void bfs();
int main()
{
freopen ("sorta.in","r",stdin);
freopen ("sorta.out","w",stdout);
cin>>n;
for (int i=0;i<n;i++)
{
cin>>w[i];
q[1].a[i]=w[i];
}
bfs();
return 0;
}
void bfs()
{
tou=wei=1;
q[1].ans=0;
while (tou<=wei)
{
for (int i=2;i<=n;i++)
{
int tmp[30]={0};
for (int j=0;j<n;j++)
{
if (j<i)
tmp[j]=q[tou].a[i-j-1];
else
tmp[j]=q[tou].a[j];
}
int v=0;
for (int j=1;j<=wei;j++)
{
for (int k=0;k<n;k++)
{
if (q[j].a[k]!=tmp[k])
{
v=1;
break;
}
}
if (v)
break;
}
if (v)
{
int p=0;
for (int j=0;j<n-1;j++)
{
if (tmp[j]>tmp[j+1])
{
p=1;
break;
}
}
if (!p)
{
cout<<q[tou].ans+1<<endl;
for (int j=0;j<q[tou].ans;j++)
{
cout<<q[tou].k[j]<<' ';
}
cout<<i;
return;
}
wei++;
for (int j=0;j<n;j++)
{
q[wei].a[j]=tmp[j];
}
for (int j=0;j<q[tou].ans;j++)
{
q[wei].k[j]=q[tou].k[j];
}
q[wei].k[q[tou].ans+1]=i;
q[wei].ans=q[tou].ans+1;
}
}
tou++;
}
}