记录编号 |
547893 |
评测结果 |
AAAAAAATAA |
题目名称 |
[NOIP 2004]虫食算 |
最终得分 |
90 |
用户昵称 |
云卷云书 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
1.055 s |
提交时间 |
2019-12-20 21:11:21 |
内存使用 |
13.66 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a[4][27],z[27];
bool shu[27];char ch;
void init()
{
int i,j;
cin>>n;
for (i=1;i<=3;i++)
for (j=n;j>=1;j--)
{cin>>ch;a[i][j]=ch-'A'+1;}
for (i=0;i<=n;i++) {shu[i]=true;z[i]=-1;}
}
void out()
{
int i;
for (i=1;i<=n-1;i++) cout<<z[i]<<' ';
cout<<z[n]<<endl;exit(0);
}
void dfs(int h,int l,int jw)
{
int r,jw1;
if (l>n)
{
if (jw==0) out();
}else
{
if (z[a[h][l]]==-1)
{
for (r=n-1;r>=0;r--)
{
if (shu[r])
{
if (h==3)
{
if ((z[a[h-2][l]]+z[a[h-1][l]]+jw)%n==r)
{
shu[r]=false;z[a[h][l]]=r;
jw1=(z[a[h-2][l]]+z[a[h-1][l]]+jw)/n;
dfs(1,l+1,jw1);
shu[r]=true;z[a[h][l]]=-1;
}
}else
{
z[a[h][l]]=r;shu[r]=false;
dfs(h+1,l,jw);
z[a[h][l]]=-1;shu[r]=true;
}
}
}
}else
{
if (h==3)
{
if ((z[a[h-1][l]]+z[a[h-2][l]]+jw)%n==z[a[h][l]])
{
jw1=(z[a[h-1][l]]+z[a[h-2][l]]+jw)/n;
dfs(1,l+1,jw1);
}
}else dfs(h+1,l,jw);
}
}
}
int main()
{
freopen("alpha.in","r",stdin);
freopen("alpha.out","w",stdout);
init();
dfs(1,1,0);
return 0;
}