八/N皇后问题的详解
来源:互联网 发布:数控铣床四叶草的编程 编辑:程序博客网 时间:2024/05/02 04:50
八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
#include<iostream>using namespace std;int Queenarr[101];//这个数组是为了存放皇后的位置,索引为行号,int n;void NQueen(int k){ if (k==n) { for (int i = 0; i < n; i++) { cout << Queenarr[i]+1<< " ";//+1 是因为行号是从0开始的 } cout << endl; return; } for (int i = 0; i < n; i++)//先将第一个皇后放在(0,0)的位置,这个结束并且输出后,将其放在(0,1),依次往后 { int j; for ( j = 0; j < k; j++)//将第K行与前K-1行的所有皇后进行列号对比,并且看是否在同一斜线上 { if (Queenarr[j]==i||abs(Queenarr[j]-i)==abs(k-j))//如果满足其中条件之一 { break;//跳出循环,将皇后放在i+1上继续重复上面步骤,看是否符合; } } if (j==k)//如果跳出循环,这个不会成立 { Queenarr[k] = i; NQueen(k + 1);//进行第 K+1个皇后 } }}int main(){ cin >> n;//n皇后 NQueen(0); return 0;}
0 0
- 八/N皇后问题的详解
- 八皇后、N皇后问题的求解。
- 八皇后问题、N皇后问题回溯法详解
- 八皇后问题、N皇后问题回溯法详解
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 由八皇后问题到n皇后的推广
- 基于八皇后上的N皇后问题
- 八皇后问题(N皇后问题)
- 八皇后问题—>n皇后问题
- N-Queens八皇后问题
- 八皇后及n皇后问题
- 八皇后乃至N皇后问题
- 八皇后及n皇后问题
- 八皇后及N皇后问题
- 八皇后及n皇后问题
- 八皇后及N皇后的解法
- N-Queens II 八皇后问题的解的个数
- CSS | 规范
- java list用法示例详解
- 了解PowerDesigner的Logical Data Model
- jsp <td>关于对齐
- const 和二级指针的使用
- 八/N皇后问题的详解
- C++虚基类和虚函数~
- 详解 get 和 post
- 项亮《推荐系统实践》笔记
- Chocolatey 安装【于2017/5/18更新】
- 浅谈Java中的Set、List、Map的区别
- LeetCode 13. Roman to Integer
- Java中Map的用法详解
- 操作系统练习题·成组链接法