#include<iostream>
#include<string.h>
#include<time.h>
using namespace std;
#define TIMES 10 //测试轮数
#define MAX_SIZE 10000 //最大可求解的皇后数量
int n; //待输入的皇后数量
int board[MAX_SIZE]; //记录棋盘状况的数组
int label[MAX_SIZE]; //标记数组
//记录冲突的数组(使用暴力循环方法检测冲突时可以不需要定义这两个数组)
int ru[MAX_SIZE * 2]; //右上
int rd[MAX_SIZE * 2]; //右下
//生成x个不重复的随机数,并放入board数组
void RandArray(int x) {
int i, temp;
memset(label, 0, sizeof(int) * (n + 1));
for (i = 0; i < n; i++) {
do {
temp = rand() % x;
} while (label[temp] == 1);
board[i] = temp;
label[temp] = 1;
}
}
/*************************************************/
/*int Conflict() { //使用暴力循环方法计算冲突
int i, j, r = 0;
for (i = 0; i < n - 1; i++)
for (j = i + 1; j < n; j++) {
if (j - i == abs(board[j] - board[i]))
r++;
}
return r;
}*/
int Conflict() { //使用数组方法计算冲突
int i, r = 0;
memset(ru, 0,
N皇后问题:基于局部搜索策略的高效算法
最新推荐文章于 2025-06-03 20:37:17 发布