8皇后问题的一种简单求解

 

8皇后问题,即马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。

8皇后问题有多种解法,现在提出我的一种见解。


首先,我设置结构体来表示每一行,每一列的皇后位置,其中x为行,y为列。



算法大致如下:

1、设置栈来存储每一行皇后位置:stack<node> sta

2、设置const int number = 8   int i = 0;  int j = 0;为一开始循环的位置,即第一行皇后的位置。

3、设置循环while ( sta.size( ) != number )一旦栈的长度不为8,则继续插入;

4、以下为while循环的主体程序:


以下为检查函数,一旦栈为空的,则表示当前为第一行的皇后,可以插入,返回true;非空,则依次与栈中数据对比,一旦处于同一列或是两者行相减的绝对值等于列相减的绝对值,则双方处于攻击位置,则返回false。


最后程序输出如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值