nqueenspuzzleimp.cpp

来自「data+structures+using+c的源码」· C++ 代码 · 共 61 行

CPP
61
字号

#include <iostream>
#include <cmath>
#include "nQueenPuzzle.h"

using namespace std;

nQueensPuzzle::nQueensPuzzle()
{
	noOfQueens = 8;
	queensInColumn = new int[8];
	noOfSolutions = 0;
}

nQueensPuzzle::nQueensPuzzle(int queens)
{
	noOfQueens = queens;
	queensInColumn = new int[noOfQueens];
	noOfSolutions = 0;
}

bool nQueensPuzzle::canPlaceQueen(int k, int i)
{
	for(int j = 0; j < k; j++)
		if((queensInColumn[j] == i)
			|| (abs(queensInColumn[j] - i) == abs(j-k)))
			return false;
	return true;
}

void nQueensPuzzle::queensConfiguration(int k)//, int queens)
{
	for(int i = 0; i < noOfQueens; i++)
	{
		if(canPlaceQueen(k, i))
		{
			queensInColumn[k] = i;
			if(k == noOfQueens - 1)
				printConfiguration();
			else
				queensConfiguration(k + 1);
		}
	}
}

void nQueensPuzzle::printConfiguration()
{
	noOfSolutions++;
	cout<<"(";
	for(int i = 0; i < noOfQueens - 1; i++)
		cout<<queensInColumn[i]<<", ";


	cout<<queensInColumn[noOfQueens - 1]<<")"<<endl;
}

int nQueensPuzzle::solutionsCount()
{
	return noOfSolutions;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?