📄 eightqueue.txt
字号:
#include<iostream>
#include<cmath>
using namespace std;
bool place(int index, int* pArray){
int i = 0;
while( i < index ){
//判断是否有重复列
//用绝对值来判断是否在对角线上
if(pArray[i] == pArray[index] || abs(pArray[i]-pArray[index]) == abs(i-index)){
return false ;
}
i++;
}
return true ;
}
void EightQueue(int iQueue, int* pArray){
int iFlag = 0;
pArray[iFlag] = -1 ;
while( iFlag > -1 ){
//移动皇后的位置
pArray[iFlag] = pArray[iFlag]+1;
while( pArray[iFlag] < iQueue && !place(iFlag, pArray) )
pArray[iFlag] = pArray[iFlag]+1 ;
if( pArray[iFlag] < iQueue ){
if( iFlag == iQueue-1 ){
for(int i = 0; i < iQueue; ++i)
cout << pArray[i] << " " ;
cout << endl;
}
else{
iFlag++;
pArray[iFlag] = 0 ;
}
else{
iFlag-- ;
}
}
}
int main(){
int iNum = 0;
cin >> iNum ;
int* pArrary = new int[iNum] ;
for(int i = 0; i < iNum; ++i)
pArray[i] = 0 ;
EightQueue(iNum, pArray) ;
return 0 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -