题目大意:
1、在n*n的矩阵中,放入n个皇后,让她们相安无事(女人不打架,呵呵);
解题思路:
1、类似前面的n车问题,但是多了一个“斜”的概念;
2、搞清楚左右斜与坐标的关系,本题搞定;
上代码:
//luogu1219 八皇后
#include<cstdio>
#include<cstring>
int h[20],l[20],zx[40],yx[40],a[20];
int n,ans=0;
void dfs(int x)
{
if(x==n+1)
{ ans++;
if(ans<=3)
{
for(int i=1;i<=n;i++) printf("%d ",a[i]);
printf("\n");
}
return ;
}
for(int y=1;y<=n;y++)
{
if(h[x]==0 && l[y]==0 &&zx[x-y+n]==0 && yx[x+y]==0)
{
h[x]=1;l[y]=1;zx[x-y+n]=1; yx[x+y]=1;
a[x]=y;
dfs(x+1);
h[x]=0;l[y]=0;zx[x-y+n]=0; yx[x+y]=0;
}
}
}
int main()
{
scanf("%d",&n);
memset(h,0,sizeof(h)); memset(l,0,sizeof(l));
memset(zx,0,sizeof(zx));memset(yx,0,sizeof(yx));
dfs(1);
printf("%d",ans);
return 0;
}