八皇后递归实现
时间:2022-07-26
本文章向大家介绍八皇后递归实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
八皇后问题,是指在8X8d的棋盘上放置八个皇后,使得她们不能互相攻击,皇后的攻击范围是同行同列,或是在一条对角线上,满足上列条件的摆法一共有多少种?
我的做法复杂度上限(8^8)
#include<iostream>
#include<cmath>
using namespace std;
const int N = 100;
int x[N] = {-1};
bool Success(int k){
for(int i=0;i<k;i++){
if(x[i]==x[k] || abs(k-i) == abs(x[i]-x[k]))
return false;
}
return true;
}
void Print(int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(j==x[i]){
cout<<"Q ";
}
else{
cout<<"0 ";
}
}
cout<<endl;
}
cout<<endl;
}
void Queue(int n){
int k=0, num=0;
while(k>=0)
{
x[k]++;
while(x[k]<n and !Success(k)){
x[k]++;
}
if(x[k]<n and k==n-1){
cout<<"第"<<++num<<"个解是:"<<endl;
Print(n);
}
else if(x[k]<n and k<n-1){
k++;
}else if(x[k]>n-1){
x[k--] = -1;
}
}
}
int main()
{
Queue(8);
while(1)getchar();
return 0;
}
- Github 年度开源报告:TensorFlow 成最受欢迎深度学习项目
- [持续更新]批处理重命名系列案例
- java学习之协调同步的线程
- 如何确保NFS服务安全
- ASM 翻译系列第三十八弹:ASM数据清理
- 借助PageSpeed,为Nginx网站服务器提速
- DX-watermark插件无法预览及上传图片报imagesx()错误的解决办法
- 抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面
- ASM 翻译系列第三十九弹:物理元数据AT表
- ASM 翻译系列第四十弹:理解ASM中 REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的含义
- 给XFN链接关系加上“nofollow”选项
- LVS中采用Jboss作为RealServer的配置要点
- 基于Prometheus的数据库监控
- Uva-------(11462) Age Sort(计数排序)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 01 . MongoDB简介及部署配置
- 06 . Jenkins分布式构建和Pipline
- 05 . ELK Stack简介原理及部署应用
- java编程思想第四版第三章要点习题
- GoAccess分析Web日志
- java编程思想第四版第三章要点总结
- 05 . Prometheus监控Nginx
- java编程思想第四版第五章总结
- 01 . 容器编排简介及Kubernetes核心概念
- java编程思想第四版第五章习题
- 02 . Kubeadm部署Kubernetes及简单应用
- java编程思想第四版第六章习题
- Docker部署Python项目
- 03 . 二进制部署kubernetes1.18.4
- 01 . 美团全链路监控CAT简介及部署