比赛 |
20140713下午练习 |
评测结果 |
RRRTTTTRTT |
题目名称 |
跳棋的挑战 |
最终得分 |
0 |
用户昵称 |
St.Burning\ |
运行时间 |
6.394 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2014-07-13 16:57:43 |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#define MAXN 17
#define x 14
#define cycle(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
int N,Ans=0;
int Map[MAXN],zs_yx[MAXN],ys_zx[MAXN];
int seat[MAXN];
void Dfs(int,int [],int [],int [],int []);
int main()
{
freopen("checker.in","r",stdin);
freopen("checher.out","w",stdout);
memset(Map,0,sizeof(Map));
memset(seat,0,sizeof(seat));
memset(zs_yx,0,sizeof(zs_yx));
memset(ys_zx,0,sizeof(ys_zx));
cin>>N;
Dfs(1,seat,Map,zs_yx,ys_zx);
cout<<Ans;
return 0;
}
void Dfs(int num, int seat[], int Map[], int zs_yx[], int ys_zx[])
{
if(num==N)
{
Ans++;
if(Ans<=3)
{
cycle(i,1,N) cout<<seat[i]<<" ";
cout<<endl;
}
return;
}
cycle(i,1,N)
{
if(Map[i]==0&&zs_yx[i-N+x]==0&&ys_zx[i+N]==0)
{
Map[i]==1;
zs_yx[i-N+x]==1;
ys_zx[i+N]==1;
seat[num]=i;
Dfs(num+1,seat,Map,zs_yx,ys_zx);
}
}
return;
}