您的位置:首页 > 其它

写程序输出8皇后问题的所有排列,要求使用非递归的深度优先遍历。

2017-01-15 12:06 441 查看
#define COLS 10
#define WAYS 100

int col[COLS];
int result[WAYS][COLS];

bool isVaild(int level) {
for (int i = 1; i < level; ++i) {
if (col[i] == col[level] || abs(i - level) == abs(col[i] - col[level]))
return false;
}
return true;
}

int eightQueen() {
memset(col, 0, sizeof(int) * COLS);
memset(result, 0, sizeof(int) * COLS * WAYS);

int level = 1;
col[level] = 0;
int count = 0;
while (level >= 1) {
col[level]++;
while (col[level] <= 8 && !isVaild(level)) {
col[level]++;
}
if (col[level] <= 8) {
if (level == 8) {
for (int i = 1; i <= 8; ++i) {
result[count][i] = col[i];
}
count++;
} else {
level++;
col[level] = 0;
}
} else {
level--;
}
}
return count;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐