算法实验二 【八皇后问题】(回溯算法)

1007.8皇后问题

时限:1000ms 内存限制:10000K 总时限:3000ms

描述

输出8皇后问题所有结果。

输入

没有输入。

输出

每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。

输入样例

输出样例

输出的前几行:
No 1:
A…
…A…
…A
…A…
…A…
…A.
.A…
…A…
No 2:
A…
…A…
…A
…A…
…A.
…A…
.A…
…A…

#include<iostream>
#include<math.h>
#include<cmath>
using namespace std;int chessboard[8];//记录每一行皇后的列数
int cnt;//可行解个数void dfs(int m);//一行一行搜索
void output(int n);//输出第n组解
bool canplace(int sx,int sy);//该坐标能否放置皇后int main()
{dfs(0);return 0;} void dfs(int m)
{if(m==8){cnt++;output(cnt); }else{for(int i=1;i<=8;i++){if(canplace(m,i)){chessboard[m]=i;dfs(m+1);chessboard[m]=0;}}}} void output(int n)  //输出序号为n的一组解
{cout<<"No "<<n<<":"<<endl;for(int i=0; i<8; i++){for(int j=1; j<=8; j++){if(chessboard[i]==j) cout<<'A';else cout<<'.';  }cout<<endl;}
}bool canplace(int sx,int sy){for(int i=0;i<sx;i++){if(chessboard[i]==sy) return false;if(fabs(sx-i)==fabs(sy-chessboard[i])) return false;}return true;}

10.22日复习
八皇后问题采用一行一行搜索的方法,chessboard保存每一行放皇后的列数,列数从1开始,恢复原状时chessboard置为0,不会产生歧义
这次循环里面有一个j打成i了…输出一直死循环~我什么时候可以再细心一点呢…

算法实验二 【八皇后问题】(回溯算法)相关推荐

  1. java递归-八皇后问题(回溯算法)

    1.八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任 ...

  2. [C语言]八皇后问题回溯算法

    八皇后问题:在8×8格的国际象棋上摆放八个皇后,任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 将棋盘抽象为4 * 4到20 * 20大小的矩阵 输入样例: 请输入棋盘的大小(4 ...

  3. 算法实验二 【踩气球】(回溯算法)

    算法实验二 [踩气球](回溯算法) 1142.踩气球 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 六一儿童节,小朋友们做踩气球游戏,气球的编号是1-100,两位小朋友各踩了 ...

  4. n皇后问题python_N皇后问题—回溯算法经典例题

    N 皇后是回溯算法经典问题之一.问题如下:请在一个 ni n 的正方形盘面上布置 n 名皇后,因为每一名皇后都可以自上下左右斜方向攻击,所以需保证每一行.每一列和每一条斜线上都只有一名皇后. 最简单的 ...

  5. c语言分治法求众数重数_算法实验二 分治法 众数问题.pdf

    算法实验二 分治法 众数问题 算法分析与设计实验二 分治法 主要内容 • 实验目的 • 主要实验仪器设备和环境 • 实验内容 • 实验要求 • 注意点 实验目的 • 理解分治法的基本思想 • 针对特定 ...

  6. c语言回溯算法骑士周游,191-骑士周游回溯算法代码实现(1)

    2.网上数据结构和算法的课程不少,但存在两个问题: 1)授课方式单一,大多是照着代码念一遍,数据结构和算法本身就比较难理解,对基础好的学员来说,还好一点,对基础不好的学生来说,基本上就是听天书了 2) ...

  7. 跑胡子胡牌算法(带赖子、基于回溯算法)

    跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...

  8. Bailian2754 八皇后【回溯】

    2754:八皇后 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格) ...

  9. YOLO系列 --- YOLOV7算法(二):YOLO V7算法detect.py代码解析

    YOLO系列 - YOLOV7算法(二):YOLO V7算法detect.py代码解析 parser = argparse.ArgumentParser()parser.add_argument('- ...

最新文章

  1. NMS和soft-nms算法
  2. arm02gnu/linux,2.1. 支持的硬件 - Debian GNU/Linux 安装手册(PPC架构)
  3. 【学习笔记】35、定义自己的异常类
  4. PowerShell管理Azure
  5. 第十二章:Java_常用类
  6. 批处理写入以及动态与参数化SQL,数据库的性能如何?
  7. Linux 命令之 chmod -- 改变文件或目录权限
  8. 【2016年第6期】中国科学院科学数据云建设与服务
  9. Chrome浏览器各种文件的存放路径汇总
  10. 格式化Json字符串工具-HiJson
  11. 常用的富文本编辑器插件
  12. 从一个线上问题看 Elasticsearch 数据清洗方式
  13. Win10 Win7 查看系统环境变量
  14. SPSS:主成分分析确定不同指标权重
  15. Chapter 1 贝叶斯推断的思想
  16. 网关与路由器关系介绍
  17. Android手机ERP开发(二)
  18. 图片动漫化 - 面部 - AnimeGAN
  19. qiankun + vue3使用踩坑记录
  20. Xmind 无法保存文件

热门文章

  1. 一个测试人员如何变成测试架构师
  2. 前端使用Vue3、后端使用Django的项目使用Idap认证时如何实现登出效果
  3. 联发科秘密武器MT6589M介绍及与MT6589对比
  4. 【第71期】破案了!库里为何会花18万美元买一个猴子头像?
  5. swiper自制分页器
  6. ubuntu重新启动网卡_Ubuntu –启动,停止,重新启动服务
  7. 7-4 调查电视节目受欢迎程度 (15分)
  8. Java 并发工具包(concurrent)详解
  9. Java实现 LeetCode 279 完全平方数
  10. 快速记住23种设计模式