Problem:八皇后问题
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:八皇后问题相关推荐
- 递归--基于回溯和递归的八皇后问题解法
八皇后问题是在8*8的棋盘上放置8枚皇后,使得棋盘中每个纵向.横向.左上至右下斜向.右上至左下斜向均只有一枚皇后.八皇后的一个可行解如图所示: ...
- 回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案
回溯算法解决八皇后 4-皇后问题 (4 - Queen's problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 ...
- 八皇后问题和八数码问题的最陡上升爬山法、首选爬山法、随机重启爬山法、模拟退火算法的分析和实现
对经典算法的问题的回顾与感想 对八皇后问题和八数码问题分别用最陡上升爬山法.首选爬山法.随机重启爬山法.模拟退火算法来实现,并且分析他们的性能. 分析 要求实现的各个算法是有共同点的,比如,八皇后问题 ...
- 爬山法实现 八皇后问题 (Python 实现)
本文主要简单阐述爬山法的基本算法思想,并给出用此算法实现八皇后问题详细过程 最基本的爬上搜索算法表示:(节选自<人工智能>第二版): function HILL-CLIMBING(prob ...
- 题目1140:八皇后
题目描述: 会下国际象棋的人都很清楚:皇后可以在横.竖.斜线上不限步数地吃掉其他棋子.如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题. 对于某个满足要求 ...
- 爬山法求解八皇后问题的全部解法
爬山法求解八皇后问题的全部解法 程序的概要设计思想 初始状态 冲突函数 寻找邻居状态 寻找全部解集 程序主要函数的作用 运行结果截图 Python源代码 程序的概要设计思想 爬山算法是一种局部贪婪算法 ...
- 爬山法、随机重启爬山法、模拟退火算法对八皇后问题和八数码问题的性能测试...
代码地址:https://github.com/laiy/AI/tree/master/awesome-search 一些前提: 1. 首先要明确这些算法并不是用于解决传统的搜索问题的(环境是可观察的 ...
- DFS基础-----刷题合集--1(全排列,八皇后,迷宫),让你明白DFS的基础用法
二刷dfs相关题目 洛谷P1706 全排列 https://www.luogu.com.cn/problem/P1706 ...
- The Sultan's Successors (八皇后)DFS
The Sultan's Successors 原题链接https://vjudge.net/contest/345248#problem/F 八皇后问题,既在8*8的棋盘中放置8个皇后,每行,每列, ...
最新文章
- Py之pandas:利用where、replace等函数对dataframe格式数据按照条件进行数据替换
- VS生成Cordova for Android应用之Gradle
- 20个科学小知识,带你走进科学世界
- python多线程编程_python多线程编程(1): python对多线程的支持
- 常用JavaScript函数 31 - 46(自我总结)
- 【css】响应式布局 @media媒介 适配平板手机
- 解决no such file or directory的问题
- iOS常用的第三方类库
- matlab 辅助函数 —— 文件下载与文件解压
- react native中使用 react-native-easy-toast 和react-native-htmlview
- 《yes!产品经理》(上册)读书笔记(完结)
- adb工具构成及原理
- vs 编译nmake工程
- AssertionError: CUDA unavailable, invalid device 0 requested
- Java正则匹配字母,数字,特殊字符
- 条件运算符与条件if的姻缘,打擂台算法和大小写字母转换,if逻辑避坑
- 计算机网络连接图标 红叉,win7电脑的网络连接图标出现红叉以及一直转圈的原因和解决方法...
- flex与相对定位在国内双核浏览器极速模式下的兼容性问题
- 谈谈我对华为HarmonyOS 2.0的看法
- Onenote笔记转换为Markdown文本
热门文章
- java for循环遍历解释_三种for循环遍历
- flask开发的CMS管理系统
- 由浅入深!Android性能优化常见问题,技术详细介绍
- java出租车源码_一文教你用java实现出租车计价器设计(附下载源码)
- 信号量机制——读者-写者问题
- 特征与角点的基础知识(1)
- apache shardingsphere 【实现oracle数据库按月分片】
- flair,python安装以及Python tkinter # If this fails your Python may not be configured for Tk解决方法
- java如何枚举定义一个数组_java 枚举(Enum)笔记
- 微信自动下载app(安卓跳转默认浏览器 苹果跳转苹果商店App Store)的实现教程尽在366API