if(column[i]==0 && zxie[i-row+N-1]==0 && fxie[i+row]==0)//不冲突 //这个判断是干嘛的?
解决时间 2021-02-14 16:19
- 提问者网友:皆是孤独
- 2021-02-14 12:56
//八皇后算法
#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<
最佳答案
- 五星知识达人网友:等灯
- 2021-02-14 13:10
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是因为数组下标不能为负的,所以加一个偏移量。
全部回答
我不会~~~但还是要微笑~~~:)
我要举报
大家都在看
推荐资讯