Problem:八皇后问题

Description
相信大家都听过经典的"八皇后"问题吧?这个游戏要求在一个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上)。桐桐对这个游戏很感兴趣,现在他想知道每种合法的摆放方案.

Input

Output
输出若干行,每行一个种方案,也就是8个数字,中间不要用空格分开

这道题开始花花很沙雕,想制定输入输出,后来发现,92种就不想了,还是老实的做吧,毕竟大家都是老实人呢(良心好痛)!!!主要思路就是依次搜索不能走的就打标记,然后一个一个找(感觉会超时,虽然不会)emmm,那么代码理解:

#include<bits/stdc++.h>//可爱的万能头
using namespace std;
int a[20];
int n,ans;
bool h[20],x1[20],x2[20];
void dfs(int dep)//开始的第一个数
{if(dep>n)//如果大于棋盘边界{for(int i=1;i<n;i++){cout<<a[i];//输出所有方案-1}cout<<a[n]<<endl; //最后一个方案return;  }for(int i=1;i<=n;i++){if(!h[i]&&!x1[i-dep+n]&&!x2[i+dep]){h[i]=x1[i-dep+n]=x2[i+dep]=1;//打上标记a[dep]=i;dfs(dep+1);//搜索下一个h[i]=x1[i-dep+n]=x2[i+dep]=0;//回溯}}
}
int main()
{n=8;//棋盘边界为8dfs(1);//从1,1开始return 0;
}

依次打标记,去重,去标记,计数才是八皇后的破解之道,这是very imoportant .understand?
算了英语考不上130还在这乱玩。
大家都懂:

#include<bits/stdc++.h>
using namespace std;
int a[20];
int n,ans;
bool h[20],x1[20],x2[20];
void dfs(int dep)
{if(dep>n){for(int i=1;i<n;i++){cout<<a[i];}cout<<a[n]<<endl; return;  }for(int i=1;i<=n;i++){if(!h[i]&&!x1[i-dep+n]&&!x2[i+dep]){h[i]=x1[i-dep+n]=x2[i+dep]=1;a[dep]=i;dfs(dep+1);h[i]=x1[i-dep+n]=x2[i+dep]=0;}}
}
int main()
{n=8;dfs(1);return 0;
}

喜欢花花的留下你的评论和关注吧!!!
爱你们哦!!!

Problem:八皇后问题相关推荐

  1. 递归--基于回溯和递归的八皇后问题解法

    八皇后问题是在8*8的棋盘上放置8枚皇后,使得棋盘中每个纵向.横向.左上至右下斜向.右上至左下斜向均只有一枚皇后.八皇后的一个可行解如图所示:                             ...

  2. 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

    回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...

  3. 八皇后问题和八数码问题的最陡上升爬山法、首选爬山法、随机重启爬山法、模拟退火算法的分析和实现

    对经典算法的问题的回顾与感想 对八皇后问题和八数码问题分别用最陡上升爬山法.首选爬山法.随机重启爬山法.模拟退火算法来实现,并且分析他们的性能. 分析 要求实现的各个算法是有共同点的,比如,八皇后问题 ...

  4. 爬山法实现 八皇后问题 (Python 实现)

    本文主要简单阐述爬山法的基本算法思想,并给出用此算法实现八皇后问题详细过程 最基本的爬上搜索算法表示:(节选自<人工智能>第二版): function HILL-CLIMBING(prob ...

  5. 题目1140:八皇后

    题目描述: 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题.  对于某个满足要求 ...

  6. 爬山法求解八皇后问题的全部解法

    爬山法求解八皇后问题的全部解法 程序的概要设计思想 初始状态 冲突函数 寻找邻居状态 寻找全部解集 程序主要函数的作用 运行结果截图 Python源代码 程序的概要设计思想 爬山算法是一种局部贪婪算法 ...

  7. 爬山法、随机重启爬山法、模拟退火算法对八皇后问题和八数码问题的性能测试...

    代码地址:https://github.com/laiy/AI/tree/master/awesome-search 一些前提: 1. 首先要明确这些算法并不是用于解决传统的搜索问题的(环境是可观察的 ...

  8. DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法

    二刷dfs相关题目 洛谷P1706            全排列 https://www.luogu.com.cn/problem/P1706                              ...

  9. The Sultan's Successors (八皇后)DFS

    The Sultan's Successors 原题链接https://vjudge.net/contest/345248#problem/F 八皇后问题,既在8*8的棋盘中放置8个皇后,每行,每列, ...

最新文章

  1. Py之pandas:利用where、replace等函数对dataframe格式数据按照条件进行数据替换
  2. VS生成Cordova for Android应用之Gradle
  3. 20个科学小知识,带你走进科学世界
  4. python多线程编程_python多线程编程(1): python对多线程的支持
  5. 常用JavaScript函数 31 - 46(自我总结)
  6. 【css】响应式布局 @media媒介 适配平板手机
  7. 解决no such file or directory的问题
  8. iOS常用的第三方类库
  9. matlab 辅助函数 —— 文件下载与文件解压
  10. react native中使用 react-native-easy-toast 和react-native-htmlview
  11. 《yes!产品经理》(上册)读书笔记(完结)
  12. adb工具构成及原理
  13. vs 编译nmake工程
  14. AssertionError: CUDA unavailable, invalid device 0 requested
  15. Java正则匹配字母,数字,特殊字符
  16. 条件运算符与条件if的姻缘,打擂台算法和大小写字母转换,if逻辑避坑
  17. 计算机网络连接图标 红叉,win7电脑的网络连接图标出现红叉以及一直转圈的原因和解决方法...
  18. flex与相对定位在国内双核浏览器极速模式下的兼容性问题
  19. 谈谈我对华为HarmonyOS 2.0的看法
  20. Onenote笔记转换为Markdown文本

热门文章

  1. java for循环遍历解释_三种for循环遍历
  2. flask开发的CMS管理系统
  3. 由浅入深!Android性能优化常见问题,技术详细介绍
  4. java出租车源码_一文教你用java实现出租车计价器设计(附下载源码)
  5. 信号量机制——读者-写者问题
  6. 特征与角点的基础知识(1)
  7. apache shardingsphere 【实现oracle数据库按月分片】
  8. flair,python安装以及Python tkinter # If this fails your Python may not be configured for Tk解决方法
  9. java如何枚举定义一个数组_java 枚举(Enum)笔记
  10. 微信自动下载app(安卓跳转默认浏览器 苹果跳转苹果商店App Store)的实现教程尽在366API