您的位置:首页 > 其它

There are 常数s 和 常数s! Usaco 1.5.4 Checker Challenge

2010-08-19 20:18 423 查看
/*
ID: zhangzz4
PROG: checker
LANG: C++
*/
#include<stdio.h>
#include<time.h>
const int N=13;
int v
,cnt,n;
int _abs(int a){return a>0?a:-a;}
int vv
,vv2[2*N],vv3[2*N];
void put(int x)
{
if(!x) return;
put(x/10);
putchar(x%10+'0');
}
int ok(int x,int r)
{
for(int i=0;i<r;i++)
if(v[i]==x||_abs(v[i]-x)==r-i) return 0;
return 1;
}
void dfs(int r)
{
if(n==r)
{
cnt++;
if(cnt<=3)
for(int i=0;i<n;i++)
{
put(v[i]+1);
putchar(i==n-1?'/n':' ');
}
return ;
}
for(int i=0;i<n;i++)
//if(ok(i,r))     3600ms
if(vv[i]+vv2[n+i-r]+vv3[r+i]==0) //550ms
{
vv[i]=vv2[n+i-r]=vv3[r+i]=1;
v[r]=i;
dfs(r+1);
vv[i]=vv2[n+i-r]=vv3[r+i]=0;
}
}
int main()
{
freopen("checker.in","r",stdin);
freopen("checker.out","w",stdout);
//int cc=clock();
scanf("%d",&n);
dfs(0);
printf("%d/n",cnt);
// printf("%d ms/n",clock()-cc);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ini 360 c