#include <iostream>
bool CheckResult(int* queen,int num)
{//检查皇后摆法是否正确
//第一个参数传入皇后坐标数组,第二个参数传入皇后个数
for (int i = 0; i < num; i++)
{
for (int j = 0; j < i; j++)
{
if (queen[i] == queen[j] || (i-j) == (queen[i]-queen[j]) || (j-i) == (queen[i]-queen[j]))
{ //检查任两个皇后,如果在同一列或同一斜线上,摆法不正确
return false;
}
}
}
return true;
}
void ShowResult(int* queen, int num)
{ //显示结果
//第一个参数传入皇后坐标数组,第二个参数传入皇后个数
static int times = 0; //不同摆法方式计数
for (int i = 0; i < num; i++)
{
printf("(%d,%d) ",i+1,queen[i]+1);
}
printf(": %d\n",++times);
}
void Loop(int* queen,const int queen_num,int now_num)
{ //递归循环,遍历所有可能解
//第一个参数传入皇后坐标数组,第二个参数表示皇后个数,第三个参数表示目前的递归次数
if(now_num-->0) //还需要递归
{
for (queen[now_num] = 0; queen[now_num] < queen_num; queen[now_num]++)
{
Loop(queen,queen_num,now_num);
}
}
else //递归完成
{
if (CheckResult(queen,queen_num))
{ //如果解正确,则显示结果
ShowResult(queen,queen_num);
}
}
}
void FindQueen(int* queen,int queen_num)
{ //提供接口由外部函数调用
Loop(queen,queen_num,queen_num);
}
int main()
{ //主函数
const int queen_num = 8; //这里可填入任意值,便推广至N皇后
int queenVec[queen_num]; //储存皇后位置
FindQueen(queenVec,queen_num); //开始寻找解
std::cin.get(); //等待用户输入回车,此时可观察结果
return 0;
}
![avatar](https://profile-avatar.csdnimg.cn/5df8bff20ad645abb899a1a8333a748d_weixin_42651281.jpg!1)
小波思基
- 粉丝: 90
- 资源: 1万+
最新资源
- 胖东来:关于“红色内裤掉色、过敏以及部门处理过程”的调查报告
- Python 实现DBN深度置信网络多输入分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现基于CNN-GRU-KDE卷积门控循环单元多变量时间序列区间预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现CNN-BiGRU卷积双向门控循环单元多输入单输出回归预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现PSO-CNN粒子群算法优化卷积神经网络的数据多输入单输出回归预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现PSO-DBN粒子群优化深度置信网络多输入分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现基于CNN-GRU-Multihead-Attention-KDE多变量时间序列区间预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现GA-GRU遗传算法优化门控循环单元的数据多输入分类预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现INFO-ELM向量加权算法优化极限学习机时间序列预测的详细项目实例(含完整的程序,GUI设计和代码详解)
- Python 实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入分类预测(含完整的程序,GUI设计和代码详解)
- “基于DSP F2812技术的多功能光伏并网逆变器设计,包括DC AC逆变、控制及显示功能”,基于DSP F2812的2KW光伏并网逆变器设计与实现:逆变、控制、保护及监控一体化方案,2KW光伏并网逆
- 联想BIOS配置工具(ThinkBIOS Config)
- Python 实现NARX非线性自回归外生模型时间序列预测(含完整的程序,GUI设计和代码详解)
- 西门子828D CNC机床的UG后处理技术解析:工厂实战应用与自用经验分享,深入探讨UG后处理技术:CNC与西门子828D后处理的实践应用与工厂实战自用策略,UG后处理-CNC-西门子828D后处理
- Python 实现GA-BiLSTM遗传算法优化双向长短期记忆网络的数据多输入分类预测(含完整的程序,GUI设计和代码详解)
- Python 实现基于CNN-BiLSTM-KDE多变量时间序列区间预测(含完整的程序,GUI设计和代码详解)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)