说到八皇后,大一时弄得似懂非懂的,今天刷题刚好碰到类似的,于是誓要把它搞明白,写博客以记之~
搞懂八皇后问题,对dfs,递归,打标记等知识的理解有很大的帮助。
这是:例题链接 (点它点它点它)
注释写得很明白了嘻嘻嘻

#include <iostream>
#include <cmath>
using namespace std;
int n, ans, book[15], a[15], b[15];void dfs(int hang){ //hang==1 表示从第一行开始 if(hang>n){  //大于棋盘的行数,递归终止 ans++;if(ans <= 3){printf("%d", b[1]);for(int i = 2; i <= n; i++){printf(" %d", b[i]);}printf("\n");}return; //及时退出 }for(int lie = 1; lie <= n; lie++){    //lie表示列 if(book[lie]==0){    //book[lie]==0 表示这一列目前没有任何皇后,保证列数不会重复 bool ok = true;for(int pre = 1; pre < hang; pre++){   //试着放置皇后,看是否满足对角线不重复 if(abs(hang-pre)==abs(lie-b[pre])){ok = false;break;}} if(ok){ //ok==true 表示对角线不重复,即可以把皇后放置在此处 book[lie] = 1; //此列以占用 b[hang] = lie; //该皇后的坐标是(hang, lie) dfs(hang+1);  //保证行数不会重复,找下一行的皇后 book[lie] = 0; //重点:回溯,清除这一行的占用,找其他的组合 }}}
}int main()
{scanf("%d", &n);dfs(1); printf("%d", ans);
}

加油8!!!
“Don’t be too hard on yourself about like ‘How does my decision today, affect me in 5 years from now?!’ There’s a difference between being excited for a challenge, and becoming absorbed in anxiety that’s borrowed from the future. Don’t miss it. Live in the moment.”
“不要对自己过于苛刻,比如纠结于“我今天做的决定会不会影响五年后的自己” ,对挑战感到兴奋和因为未来的不确定而感到焦虑是不一样的。不要错过此刻的精彩,活在当下。”
                                                       ——Taylor Swift    2019.11.11语

八皇后(例题:洛谷P1219)相关推荐

  1. 深度优先搜索——八皇后问题(洛谷 P1219)

    题目选自洛谷P1219     该题针对6-13皇后都行,只需改动输入的数字. 八皇后问题是经典的DFS问题,唯一需要注意的就是判断能够放置的条件,即满足什么状况是对的. 题目要求不能在同一行,同一列 ...

  2. 八皇后(洛谷-P1219)

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  3. 洛谷P1219 [USACO1.5]八皇后 Checker Challenge(C语言)

    洛谷P1219 [USACO1.5]八皇后 Checker Challenge 题目 代码 这个八皇后问题也是经典入门深搜的题目了呀,理论上深搜都可以运用数据结构的栈来模拟计算机内部的压栈操作.但这里 ...

  4. 洛谷 P1219 八皇后

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  5. 洛谷 P1219 ---- 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  6. 洛谷——P1219 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  7. 洛谷 P1219 八皇后题解

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  8. 洛谷 P1219八皇后

    题目: 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子.上面的布局可以用序列2 4 6 ...

  9. 图解Topo拓扑排序 例题洛谷P4017 最大食物链计数

    适用条件:无环图 输出结果:使得每个节点,以它为终点的起点节点排都在其前面 作用:递推保证前面的节点都已经被使用过 实现方法:从没有入边的节点开始,输出并从其他节点中删去自己,重复此步骤直到所有节点都 ...

最新文章

  1. 洛谷 P1064 金明的预算方案
  2. 使用log4jdbc记录SQL信息
  3. java8 lambda判断_Java8新特性-Lambda表达式
  4. Java命令行界面(第25部分):JCommando
  5. mysql中用来取余数的函数是_MySQL常用函数-单行处理函数-字符串处理函数(更新中...)...
  6. 你的消息队列如何保证消息不丢失,且只被消费一次,这篇就教会你
  7. 零基础 Amazon Web Services (AWS) 入门教程 (列表)
  8. spring所需包下载
  9. etherlime-3-Etherlime Library API-Deployed Contract Wrapper
  10. RuntimeError: Exporting the operator uniform to ONNX opset version 12 is not supported.
  11. Python 正则表达式的$美元符号
  12. Cisco Packet Tracer路由器的基本命令
  13. 服务器安全-避免被攻击者查到服务器源 IP与对攻击者ID信息收集
  14. 百分比收益率和对数收益率
  15. 微信小程序调用支付接口支付(tp5、小程序)
  16. linux下执行.sh文件的方法和语法
  17. 初等行变换、初等列变换
  18. 操作系统真象还原第七章
  19. 数学诺贝尔奖2008阿贝尔奖揭晓
  20. MobileNet v1 和 v2

热门文章

  1. 做VC?不做VC?创业还是做FA?朋友你到底想做什么?
  2. 华工大学计算机基础题库,华工大学计算机基础多选题库.pdf
  3. 新冠疫情中的区块链应用
  4. Android工程师面试准备知识点
  5. 服务器阵列信息恢复,DELL RAID阵列的创建恢复回原有的用户数据
  6. 为什么国企要加快推进数字化转型?
  7. 基于python下django框架 实现校园教室图书馆座位预约系统详细设计
  8. 西北乱跑娃 --- dockerfile部署项目
  9. 关于分类模型评估指标的理解
  10. mongodb 基本介绍