这是我编的关于八皇后问题,输入几就得出该类皇后的结果。但现实结果为0,给为能帮我看看哪里出错了吗
#ifndef QUEEN
#define QUEEN
#include
#include
using std::vector;
class Queen
{
public:
Queen(int x);
int count(int x);
private:
vector queen;
int size;
bool judge(int x);
//void print(int i);
};
Queen::Queen(int x)
{
for (int i = 0;i < size;i++)
queen.push_back(0);
}
bool Queen::judge(int x)
{
if (x == 0)
return true;
for (int i = 0;i < size - 1;i++)
if (queen[x] == queen[i] || queen[x] + i == queen[i] + x || queen[x] + x == queen[i] + i)
return false;
return true;
}
int Queen::count(int x)
{
int n = 0;
for (int i = x;i < size;i++)
for (int j = 0;j < size;j++)
{
queen[i] = j;
if (judge(i))
{
//print(i);
if (i == size - 1)
return 1;
else
n += count(i + 1);
}
}
return n;
}
#include
#include"queen.h"
int main()
{
using namespace std;
cout << "输入皇后大小:";
int n;
cin >> n;
while (n != 0)
{
Queen q(n);
int n = q.count(0);
cout << "有" << n << "种解法.\n";
cout << "输入皇后大小:";
cin >> n;
}
}