加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
八皇后问题 1.38 KB
一键复制 编辑 原始数据 按行查看 历史
yuzhi535 提交于 2020-02-25 09:55 . Create 八皇后问题
#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;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化