📄 usaco_checker.cpp
字号:
/*
ID:wangyuc2
PROG:checker
LANG:C++
*/
#include <iostream>
#include <fstream>
#include <memory.h>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin ("checker.in");
ofstream fout ("checker.out");
bool col[13];
bool v1[25];
bool v2[25];
int a[13];
int i,n,k,sum,m;
int check(int t)
{
int j;
if(t==n)
{
sum++;
if(sum<=3)
{
for(k=0;k<n-1;k++)
fout<<a[k]<<' ';
fout<<a[n-1]<<endl;
}
if(a[n-1]==n/2+1) m++;
}
else
{
for(j=0;j<n;j++)
{
if(col[j] && v1[t+j] &&v2[t-j+n-1])
{
col[j]=false;v1[t+j]=false;v2[t-j+n-1]=false;
a[t]=j+1;
check(t+1);
col[j]=true;v1[t+j]=true;v2[t-j+n-1]=true;
}
}
}
return 0;
}
int main()
{
fin>>n;
sum=0;
m=0;
memset(col,true,sizeof(col));
memset(v1,true,sizeof(v1));
memset(v2,true,sizeof(v2));
if(n==6)
{
check(0);
fout<<sum<<endl;
}
else{
for(i=0;i<n/2;i++)
{
col[i]=false;v1[i]=false;v2[n-i-1]=false;
a[0]=i+1;
check(1);
col[i]=true;v1[i]=true;v2[n-i-1]=true;
}
if(n%2==1) sum+=m;
sum*=2;
fout<<sum<<endl;
}
//system("PAUSE");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -