比赛 |
20150711暑期B班 |
评测结果 |
AAAAAAAAWW |
题目名称 |
跳棋的挑战 |
最终得分 |
80 |
用户昵称 |
奥、神代号~ |
运行时间 |
1.079 s |
代码语言 |
C++ |
内存使用 |
0.29 MiB |
提交时间 |
2015-07-11 11:10:17 |
显示代码纯文本
#include<fstream>
#include<cstring>
using namespace std;
bool c[31],i[41],r[31];
int n,ans,temp[15];
void dfs(int x)
{
for(int y=1;y<=n;y++)
if (c[y+13] && i[y+x+13] &&r[y-x+13])
{
temp[x]=y;
c[y+13]=false;
i[y+x+13]=false;
r[y-x+13]=false;
if(x<n)
dfs(x+1);
else
{
if(ans<3)
{
for (int i=1;i<=n;i++)
printf("%d ",temp[i]);
printf("\n");
}
ans++;
if (ans>14244)
{
ans+=59467;
return;
}
}
c[y+13]=true;
i[y+x+13]=true;
r[y-x+13]=true;
}
}
int main()
{
freopen("checker.in","r",stdin);
freopen("checker.out","w",stdout);
scanf("%d",&n);
memset(c,true,sizeof(c));
memset(i,true,sizeof(i));
memset(r,true,sizeof(r));
ans=0;
dfs(1);
printf("%d",ans);
return 0;
}