文章
1
粉丝
133
获赞
0
访问
5.3k
本题可采用打表的方式通过。(我是蒟蒻.jpg)
首先,输出所有八皇后问题的解。考虑到后续需要字典序,这里直接从0开始遍历。
#include<cstdio>
using namespace std;
int ans[8]={0};
int q=0;
void panduan(int qizi[8])
{
int qipan[8][8]={0};
for(int ii=0;ii<7;ii++)
{
// hang: qizi[ii] lie: ii
int lie=qizi[ii]; int hang=ii;
// printf("hang=%d lie=%d\n",hang,lie);
for(int i=0;i<=7;i++)
{
qipan[i][lie]=1; // hang=1
}
for(int i=0;i<=7;i++)
{
qipan[hang][i]=1; // lie=1
}
int temp_lie1=lie;
for(int i=hang;i>=0;i--)
{
qipan[i][temp_lie1--]=3; //zuoshang=1
if(temp_lie1<0) break;
}
int temp_lie2=lie;
for(int i=hang;i>=0;i--)
{
qipan[i][temp_lie2++]=4; //youshang=1
if(temp_lie2>7) break;
}
int temp_lie3=lie;
for(int i=hang;i<=7;i++)
{
qipan[i][temp_lie3--]=5; //zuoxia=1
if(temp_lie3<0) break;
}
int temp_lie4=lie;
for(int i=hang;i<=7;i++)
{
qipan[i][temp_lie4++]=6; //youxia=1
if(temp_lie4>7) br...
登录后发布评论
暂无评论,来抢沙发