//#define _CRT_SECURE_NO_DEPRECATE
//#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
#include<iostream>
#include<stdlib.h>//use abs
using namespace std;
int number = 1;//记录一共多少种排列
int a[8][9] = { 0 };//第一列用来存放当前行的皇后的纵坐标
void trial(int);
int main()
{
trial(0);
return 0;
}
void print()
{
cout << "第" << number++ << "种排列:\n";
for (int i =0; i < 8; i++)
{
for (int j = 1; j < 9; j++)
{
cout << a[i][j];
cout << ((j == 8) ? "\n" : " ");
}
}
cout << endl;
}
bool isLegal(int &x, int &y)
{
for (int i = 0; i < x; i++)
{
if (a[i][0] == y || abs(i - x) == abs(a[i][0] - y))
return false;
}
return true;
}
void trial(int n)//n表示当前行
{
if (n==8)
print();
else
{
for (int j = 1; j < 9; j++)
{
if (isLegal(n, j))
{
a[n][0] = j;
a[n][j] = 1;
trial(n + 1);
}
a[n][j] = 0;
}
}
}
八皇后
最新推荐文章于 2020-06-21 17:04:46 发布