八皇后问题-回溯算法
来源:互联网 发布:全国电视台直播软件 编辑:程序博客网 时间:2024/05/22 09:06
八皇后问题
(1)逐行放置,检测位置是否合法只需要检测是否同列,是否同对角线,是否同反对角线;
(2)采用一维数组保存皇后位置(record[i]的含义为第i行皇后所处位置为record[i]);
(3)对角线的斜率是1,反对角线的斜率为-1,若两个皇后的位置为(xi,yi)(xj,yj),则只需要|xi-xj| != |yi-yj| 且 yi != yj,位置便是合法的;
#include <iostream>#include <cmath>using namespace std;int counter = 0;int N = 8;int record[8];//第i行的第record[i]列放置了一个皇后void func(int curRow){ if (curRow == N) counter++; else for (int i = 0; i < N;i++) { bool isOk = true; record[curRow] = i;//尝试将第cur行的皇后放在第i列 for (int j = 0; j < curRow; j++)// { if (record[curRow] == record[j] || abs(curRow - j) == abs(record[curRow] - record[j])) { isOk = false; break; } } if (isOk)//如果放置合法 那么进行下一行的放置 func(curRow + 1); }}int main(){ func(0); cout << counter << endl; return 0;}
欢迎大家批评指正~
0 0
- 回溯算法---八皇后问题
- 回溯算法-八皇后问题
- 八皇后问题回溯算法
- 回溯算法-八皇后问题
- 八皇后问题-回溯算法
- 八皇后问题-回溯算法
- 回溯算法:八皇后问题
- 八皇后 问题 回溯算法
- 算法[回溯]-八皇后问题
- 回溯算法之八皇后问题
- 八皇后问题回溯算法演示系统
- 八皇后问题递归回溯算法实现
- 【算法复习二】八皇后问题 ---- 回溯
- 八皇后问题的回溯算法
- 八皇后问题与回溯算法
- 回溯算法之八皇后问题
- C++数据结构--回溯算法--八皇后问题
- 八皇后问题与回溯算法
- Shell Script介绍及变量使用
- thinkphp控制器笔记
- JS数据类型(二)typeof操作符
- hdoj 1428 漫步校园【bfs+dfs】
- Espresso自动化测试(十三)- UiAutomator2与Espresso的结合
- 八皇后问题-回溯算法
- 杭电2955-0-1背包
- LPS最长回文子序列
- 抽象工厂模式
- 基于socket,实现用户注册,用户登录,以及文件上传的例子
- 自定义的一个App搜索框
- hdoj 1429 胜利大逃亡(续)【bfs好题】
- 匹配极其相关问题(一)
- LeetCode 1 - Two Sum ( JAVA )