#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
using namespace std;
const int Size = 8;
int queen[Size];
bool Conflict(int r, int p) {
for (int i = 0; i < r; ++ i) {
if (p == queen[i]) return true;
if (r + p == i + queen[i]) return true;
if (r - p == i - queen[i]) return true;
}
return false;
}
int Count(int r, int p) {
int t = 0;
for (int i = r + 1; i < 8; ++ i)
for (int j = 0; j < 8; ++ j)
if (!Conflict(i, j)) t ++;
return t;
}
void PrintAns() {
cout << "**************************************************************" << endl;
cout << "* 八皇后问题例解 *" << endl;
cout << "**************************************************************" << endl;
cout << "* *" << endl;
cout << "* +";
for (int j = 0; j < 8; ++ j) cout << "---+";
cout << " *" << endl;
for (int i = 0; i < 8; ++ i) {
cout << "* |";
for (int j = 0; j < 8; ++ j)
if (queen[i] == j) cout << " Q |";
else cout << " |";
cout << " *" << endl;
cout << "* +";
for (int j = 0; j < 8; ++ j) cout << "---+";
cout << " *" << endl;
}
cout << "* *" << endl;
cout << "**************************************************************" << endl;
}
bool PutQueen(int row) {
int temp = -1, count[Size];
if (row == 7) {
PrintAns();
return true;
}
memset(count, -1, sizeof(count));
for (int i = 0; i < 8; ++ i) {
if (!Conflict(row + 1, i))
count[i] = Count(row + 1, i);
}
for (int i = 0; i < 8; ++ i)
if (temp < count[i]) temp = count[i];
if (temp == -1) return false;
for (int i = 0; i < 8; ++ i)
if (temp == count[i]) {
queen[row + 1] = i;
if (PutQueen(row + 1)) return true;
}
return false;
}
int main() {
srand((unsigned)time(NULL));
while (true) {
queen[0] = rand() % Size;
if (PutQueen(0)) break;
}
}
局外狗
- 粉丝: 83
- 资源: 1万+
最新资源
- 孔子仁学思想的内涵及价值.doc
- 课程教学团队任务书(含填写内容).doc
- 六年级语文句型转换练习题.doc
- 每周安全教育主题和内容.doc
- 民办学校资产与财务的管理 .doc
- 旅游管理综合试题.doc
- 某幼儿园.听课记录文本(表).doc
- 某县中药资源可持续开展情况研究.doc
- 泥塑教学案(得意的小螃蟹、花瓶,,,).doc
- 普通昆虫学试题及答案.doc
- 七年级数学(下册)4.5利用三角形全等测距离习题.doc
- 企业营销战略的研究.doc
- 全中小学校生安全知识网络答题试题及答案(五)初一年级.doc
- 浅论当前初中学生存在的问题和对策.doc
- 生物化学期末考试题和答案.doc
- 人版高中生物必修一知识点总结14.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈