/**以下是關於皇后的擺放判斷的具體操作
int Place(int* Column,int index){
int i;
for(i=1;i<=index;i++){
int Column_differ=abs(Column[index]-Column[i]);/**皇后的位置與棋盤最大寬度的 /*距離
int Row_differ=abs(index-i); /**皇后的位置與棋盤最大高度的距 /**離
/**根本目的是爲了避免一前一後兩個 /*皇后在同一斜線上
if(Column[i]==Column[index]||Column_differ==Row_deffer)
/**判斷皇后的位置是否在最後一行,是否在斜線的交叉處位置
return 0;
/**退回上一行的開始部分進行篩選
}
return 1;/**滿足擺放條件,進行下一輪的擺放
}
void N_Queue(int n){
int Column_Num[n+1];
int index=1;
int i;
int answer_num=0; /**answer_num?
/**初始化元素
for(i=1; i<=n;i++)
Column_Num[i]=0;/**表示從行首開始
for(int i=1;i<=n;i++)
Column_Num[i]=0;
while(index>0){
Column_Num[index]++;
while(Column_Num[index]<=n && !Place(Column_Num,index)) /**尋找皇后的位置
Column Num[index]++;
if(Column_Num[index]<=n){
if(index==n){ /**最後一個皇后放置成功!
answer_num++;
for(i=1;i<=n;i++)
Column_Num[index]++;
}
else{
/**繼續尋找下一個皇后的位置
index++;
Column_Num[index]=0;
}
}
}
else
index--;/**當前皇后無法擺放,回溯至上一個皇后
}
}