您的位置:首页 > 编程语言 > C语言/C++

C++搜索与回溯算法之八皇后问题

2017-05-27 18:40 239 查看
八皇后问题:在国际象棋棋盘上放置八个皇后,要求每两个皇后之间不能直接吃掉对方。输出所有的解。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int b[10]={0},c[20]={0},d[20]={0},a[10][10]={0};
int t=0;
void print()
{
t++;
printf("No. %d\n",t);
for (int i = 1 ; i <= 8 ; i++ )
{
for(int j=1;j<=7;j++)
printf("%d ",a[j][i]);
printf("%d\n",a[8][i]);
}
}
void search(int i)
{
for(int j=1;j<=8;j++)
{
if ( b[j] == 0 && c[i+j] == 0 && d[i-j+8] == 0)
{
b[j]=1;
c[i+j]=1;
d[i-j+8]=1;
a[i][j]=1;
if(i==8)
print();
else
search(i+1);
b[j]=0;
c[i+j]=0;
d[i-j+8]=0;
a[i][j]=0;
}
}
}
int main()
{
search(1);
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息