📄 queen.cpp
字号:
// Queen.cpp: implementation of the Queen class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Queen.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Queen::Queen()
{
}
Queen::~Queen()
{
}
bool Queen::Place(int k)
{
for (int j = 1;j<k;j++) {
if(abs(k-j)== abs(x[j]-x[k])|| x[j]== x[k]) return false;
}
return true;
}
void Queen::Backtrack(int t)
{
if(t>n) {
//////////////////////////////////////////////////////////////////////////
// 输出当前解
/* for (int i=1;i<=n;i++) {
printf("%d\t",x[i]);
if(i%10 ==0 && n>0)
printf("\n");
}
printf("\n");
*/ sum++;//对解的个数加1;
}
else
for (int i =1;i<=n;i++) {//对于t位置的数值,取遍所有可能的解
x[t] = i;
if (Place(t)) {
Backtrack(t+1);
}
}
}
int nQueen(int n)
{
Queen X;
X.n = n;
X.sum = 0;
int *p = new int[n+1];
for (int i =0;i<=n;i++) {
p[i]=0;
}
X.x = p;
X.Backtrack(1);
delete []p;
return X.sum;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -