/**以下是关于皇后的摆放判断的具体操作
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--;/**当前皇后无法摆放,回溯至上一个皇后
}
}