总共有92种解法。
//递归算法解决八皇后问题。总共有92种解法。
#include <iostream>
using namespace std;
class queen {
public:
void print();
void search(int);
int c[20], n = 8, cnt = 0;
};
void queen::print()
{
cout << "第" << cnt << "种解法为" << endl;
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < n; ++j)
{
if (j == c[i]) cout << "1 ";
else cout << "0 ";
}
cout << endl;
}
cout << endl;
}
void queen::search(int r) {
if (r == n) {
++cnt;
print();
return;
}
for (int i = 0; i < n;i++) {
c[r] = i;
int ok = 1;
for (int j = 0; j < r; ++j)
if (c[r] == c[j] || r - j == c[r] - c[j] || r - j == c[j] - c[r])
{
ok = 0;
break;
}
if (ok) search(r + 1);
}
}
int main() {
queen q;
q.search(0);
cout << q.cnt << endl;
return 0;
}