比赛 |
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;
- }