标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10397 Accepted Submission(s): 4682
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int tot=0;
int n;
int c[100];
int vis[3][100];
int ans[12];
void solve(int cur)
{
int i;
if(cur==n) tot++;
else for(i=0; i<n; i++)
{
if(!vis[0][i]&&!vis[1][cur+i]&&!vis[2][cur-i+n])
{
c[cur]=i;
vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=1;//修改全局变量
solve(cur+1);
//及时恢复被修改的值
vis[0][i]=vis[1][cur+i]=vis[2][cur-i+n]=0;
}
}
}
int main()
{
//之前一直TLE,是忘了打表了
int m,k=1;
for(int i=1;i<=10;i++)
{memset(vis,0,sizeof(vis));tot=0;n=i;solve(0);ans[k++]=tot;}
while(scanf("%d",&m)&&m)
{
printf("%d\n",ans[m]);
}
}
标签:
原文地址:http://www.cnblogs.com/orchidzjl/p/4351809.html