eightqueue.txt

来自「eightqueue方面的冬冬。。 觉得在某一些方面说的还可以」· 文本 代码 · 共 54 行

TXT
54
字号
#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 + =
减小字号Ctrl + -
显示快捷键?