N皇后问题(基于递归回溯法的C语言实现)
发布时间
阅读量:
阅读量
N皇后问题
在n×n的棋盘上,需要安置n个皇后,使得这些皇后之间不会互相攻击。根据国际象棋的规则,皇后可以对与其处于同一行、同一列或同一斜线上的棋子发起攻击。
当前设定为4个皇后,需将其放置于4×4的棋盘中,并列举出所有可能的摆放方式。
在此过程中无需构建二维数组,仅需使用i表示列,而a[i]则用于表示对应的行位置。
代码:
#include<stdio.h>
#define MAX 10
#define n 4 //4个皇后
int a[MAX];//第i个皇后在a[i]上
int sum = 0;
int detection(int x,int y) {//判断是否能放
for (int i = 1; i <= x; i++) {
if (a[i] == y)return 0;//|有皇后
if (i + a[i] == x + y)return 0;//斜边右边有皇后
if (i - a[i] == x - y)return 0;//斜边左边有皇后
}return 1;//可以放皇后
}
void queen(int row) {//第row个皇后在?
全部评论 (0)
还没有任何评论哟~
