记录编号 |
37430 |
评测结果 |
AAAAAATTTT |
题目名称 |
棋盘放車 |
最终得分 |
60 |
用户昵称 |
Yeehok |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
4.020 s |
提交时间 |
2012-03-29 21:58:19 |
内存使用 |
0.26 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
int N,M;
unsigned long long Ans=0;
int hang[31];
int flag[31][31];
bool Check(int k,int j)
{
if(flag[k][j])
return (false);
for(int i=1;i<=N;i++)
{
if(hang[i]==j)
return (false);
}
return (true);
}
int main(void)
{
freopen("examone.in","r",stdin);
freopen("examone.out","w",stdout);
scanf("%d%d",&N,&M);
memset(hang,0,sizeof(hang));
memset(flag,0,sizeof(flag));
int a,b;
for(int i=1;i<=M;i++)
{
scanf("%d %d\n",&a,&b);
flag[a][b]=1;
}
int i=1,j=1;
while(i<=N)
{
while(j<=N)
{
if(Check(i,j))
{
hang[i]=j;
j=1;
break;
}
else
{
j++;
}
}
if(!hang[i])
{
if(i==1)
{
printf("%lld\n",Ans);
return(0);
}
else
{
i--;
j=hang[i]+1;
hang[i]=0;
continue;
}
}
if(i==N)
{
Ans++;
j=hang[i]+1;
hang[i]=0;
continue;
}
i++;
}
return (0);
}