#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[9] = { 0 };
int b[9][9] = { 0 };
int test_static_used_times() //记录函数调用次数的方法,从别人那里学来的,现在还不了解static
{
static int times = 0;
times++;
return times;
}
void jQueen()
{
int flag = 1;
for (int i = 1;i <= 8;i++)
{
for (int j = i + 1;j <= 8;j++)
{
if (a[i] == a[j])
flag = 0;
if (abs(j - i) == abs(a[j] - a[i]))
flag = 0;
}
}
if (flag)
{
int x = test_static_used_times();
printf("No. %d\n", x);
for (int k = 1;k <= 8;k++)
{
b[9-k][a[k]] = 1;
}
for (int i = 1;i <= 8;i++)
{
for (int j = 1;j <= 8;j++)
{
cout << b[j][i] << " ";
}
cout << endl;
}
memset(b, 0, sizeof(b));
}
}
void Queen(int n,int i)
{
a[n] = i;
if (n == 1)
{
jQueen();
return;
}
for (int i = 1;i <= 8;i++)
{
Queen(n - 1, i);
}
}
int main()
{
for (int i = 1;i <= 8;i++)
{
Queen(8,i);
}
return 0;
}
OpenJudge百练-八皇后问题2698
最新推荐文章于 2024-05-16 14:05:08 发布