永发信息网

if(column[i]==0 && zxie[i-row+N-1]==0 && fxie[i+row]==0)//不冲突 //这个判断是干嘛的?

答案:2  悬赏:60  手机版
解决时间 2021-02-14 16:19
//八皇后算法
#include "stdafx.h"
#include
using namespace std;
#define MAX 15
char map[MAX][MAX];
int column[MAX];//标记:该行已经有皇后则为1,否则为0
int zxie[MAX];//标记:该主斜线已经有皇后则为1,否则为0
int fxie[MAX];//标记:该辅斜线已经有皇后则为1,否则为0
int N;
int sum;
void output()
{
for(int i=0;i {
for(int j=0;j cout< // cout< cout< }
cout<}
void queue8(int row)//形式参数是row行数
{
for(int i=0;i {
if(column[i]==0 && zxie[i-row+N-1]==0 && fxie[i+row]==0)//不冲突
{
map[row][i]='@';
column[i]=1;
zxie[i-row+N-1]=1;
fxie[i+row]=1;
if(row<(N-1))
queue8(row+1);
else
{
output();
sum++;
}
//回溯
map[row][i]='*';
column[i]=0;
zxie[i-row+N-1]=0;
fxie[i+row]=0;
}
}
}
int main()
{
while(cin>>N && N!=0)
{
memset(map, '*', sizeof(map));
memset(column, 0, sizeof(column));
memset(zxie, 0, sizeof(zxie));
memset(fxie, 0, sizeof(fxie));
sum=0;
queue8(0);
cout<<"总共有"< }
return 0;
}
最佳答案
if(column[i]==0 && zxie[i-row+N-1]==0 && fxie[i+row]==0)
这句话就是判断八皇后合法的规则呀,所有的列不能重复,所有的行不能从夫,所有的对角线不能重复,因为你放的时候一行放一个,所以行肯定不冲突,不用判断,所以只剩下列也就是column,两个对角线zxie跟fxie,对角线如果学过一点数学知识就应该知道,一个对角线上行号加列号是定值,另一个对角线上,行号减列号是个定值,所以就有了i+row跟i-row+N-1
后面这个N-1是因为数组下标不能为负的,所以加一个偏移量。
全部回答
我不会~~~但还是要微笑~~~:)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我家住的三楼,是十多年的老楼,二楼棚顶渗水
32÷4+19=27跟它一样的算式什么一什么再除什
玻尿酸补水塑颜spa面膜怎么样
永诚商贸有限公司地址有知道的么?有点事想过
给公公过生日买了一件衣服,他一次没穿,却给
赛维干洗·生活馆在哪里啊,我有事要去这个地
广东汕头出的一个月的临时车牌可以出省吗?
名人经不住生活的磨砺最后失败的事例?
资生堂安耐晒金瓶淘宝比官网的价格低,是假货
星海舞蹈工作室地址在什么地方,我要处理点事
吉顺康城在哪里啊,我有事要去这个地方
地球赤道周长4万千米,设想用铁丝把赤道扎紧,
暗影刺客 暗裔化身 哪个伤害高
跆拳道后空翻初级怎样练?怎样练提高弹跳力?
怪侠欧阳德第2部什么时候出来·
推荐资讯
熊猫伯伯 免费注册是什么手机格式
求群雄逐鹿夏侯渊出装备啊!!
苹果手机与汽车蓝牙连接不上
有本网游小说主角游戏里面叫恒王,书叫什么名
关冲穴的简介
高中物理力学选择题:关于两物体,水平转盘转
土溪镇工商所在哪里啊,我有事要去这个地方
我的外置声卡跟鼠标怎么不能同时使用啊!
vb 6.0中怎么实现保文件保存到指定路径
ricohaficio3235c复印机怎么装黑色碳粉盒的步
电脑上不了网,但是手机还有电视都连了无线网
华芳烧烤地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?