c++ 递归 8皇后
来源:互联网 发布:软件成果展板板 编辑:程序博客网 时间:2024/05/20 06:51
第一篇博客上线了!!!!
真是蛋疼,又是一次和函数参数不得不说的故事
写下博客警示 以后每次bug首要任务先检查参数写对没!!!!!!!!!
嗯 好的 进入正题 首先copy一下8皇后的定义
8皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出的,在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。计算机发明后,有多种方法可以解决此问题。
附上自己的代码(由于纠结了太多边最后就没有太注意命名,如果看官的话见谅一下)
#include<iostream>using namespace std;int flag(0);int a[20]{0};bool success(1);void find(int hang){if (hang == 8) //是否把8行全部检查完{for (int out = 0; out != 8; ++out)cout << a[out]<<" ";++flag;cout << endl;}else{for (int lie = 0; lie != 8; ++lie) //对传入的行数的每一列进行判断{a[hang] = lie;success = 1;for (int keyi = 0; keyi != hang; ++keyi) //对传入行数的前面的每一行 {if (a[keyi] == a[hang] || a[keyi] - a[hang] == keyi - hang || a[keyi] - a[hang] == hang-keyi) //是非会被当前皇后干掉{success = 0; //吃掉就不成功 break;}}if (success) //没被吃掉find(hang+1); //进入下一行(就是这里!!!!一开始写的++hang 我去我真的脑残了)}}}int main(){find(0);cout << flag << endl;cin.get();}
0 0
- 8皇后 n皇后 递归
- c++ 递归 8皇后
- 递归-8皇后问题
- 递归-回溯法求解8皇后问题(C)
- C语言-数据结构-递归求解实例-8皇后问题
- 8皇后 n皇后 非递归
- C递归的N皇后问题.
- 递归求解N皇后问题(c语言)
- 八皇后 C语言递归实现
- 八皇后问题 回溯递归 C语言版
- 八皇后问题递归实现(C++)
- 递归求解8皇后问题
- 8皇后的递归算法
- 8皇后非递归求解
- 八皇后问题 C语言,递归,非递归,循环!
- 8皇后(按列递归)
- 递归实现解决8皇后问题
- 8皇后问题 非递归实现
- C++ Tips and Tricks
- crc
- NouveauParfum
- Android Studio中使用AIDL简单示例
- 关于cell点击之后变换背景文字的颜色的cell.selectedTextColor这个属性可以用的
- c++ 递归 8皇后
- MySQL 5.7非安装版压缩包无法启动服务的解决办法
- Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等
- Josephus问题解决方法二
- 关于学习
- 【Android导航 站在巨人的肩膀上】进阶之路
- 朝花夕拾
- JS 之 验证数字
- NUC505 USB中断的使用场景