代码拉取完成,页面将自动刷新
#include <iostream>
#define N 8
#define MAX 10000
using std::cout;
using std::endl;
using std::ends;
int a[N];
void init()
{
for (int i = 0; i < N; ++i)
a[i] = MAX;
}
void print()
{
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < N; ++j)
{
if (j == a[i])
cout << '*' << ends;
else
{
cout << '-' << ends;
}
}
cout << endl;
}
}
bool valid(int row, int col)
{
for (int i = 0; i <= row; ++i)
{
if (a[i] == col || abs(a[i] - col) == abs(i - row))
return 0;
}
return 1;
}
void EightQueue()
{
int i, j = 0, index = 0;
for (i = 0; i < N; ++i)
{
for (; j < N; ++j)
{
if (valid(i, j))
{
a[i] = j;
j = 0;
break;
}
}
if (a[i] == MAX)
{
if (i == 0)
break;
--i;
j = a[i] + 1;
a[i] = MAX;
--i;
continue;
}
if (i == N - 1)
{
cout << "++++++++++++++++++++++++++++++++++++++++++++++++\n第" << ++index << "种:" << endl;
print();
j = a[i] + 1;
a[i] = MAX;
--i;
}
}
}
int main(void)
{
init();
EightQueue();
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。