#?包括?& ltmath.h & gt
#?包括?& ltstdlib.h & gt
int?col[11],左[15],右[15];
int?女王[11];
int?n = 0;int?sum = 0;int?q[20];
int?sum 1 = 0;
作廢?Queens(int,int);
int?Place(int,int);
作廢?print(int);
int?主()
{
int?n;
while(scanf("%d ",& ampn)!=EOF)
{
皇後區(1,n);
printf("%d\n\n ",sum 1);
}
回歸?0;
}
作廢?Queens(int?k,int?n)
{
int?我;
如果(n & ltk)?打印(n);
其他
{?//每行從第壹列開始。
for(I = 1;我& lt= n;I++)//當K行I列可以放皇後時,會立即進入下壹行,每行只能有壹個皇後。
if(Place(i,k)==1)
{//標記
q[k]= I;?//轉到下壹行
皇後區(k+1,n);
}
}
}
int?Place(int?I,int?k)?//這個函數是決定皇後是否可以放在那個位置。
{
int?j = 1;
while(j & lt;k)
{
if((q[j]= = I)| | ABS(q[j]-I)= = ABS(j-k))?//當第I列第K行放不下時。
回歸?0;?//返回結果false
j++;
}
回歸?1;?//能放的話是真的。
}
作廢?print(int?n)
{
int?我;?//打印結果
for(I = 1;我& lt= n;i++)
printf("%d?",q[I]);
sum 1++;
printf(" \ n ");
}