8皇后问题

8皇后问题

 

8皇后问题是在一个8X8的棋盘上如何摆放8个国际象棋中的后,国际象棋中,后可以走直线和斜线,因此这个程序的关键就是让8个皇后既不在同一行,也不在同一个直线上。


今天晚上,终于在我的屏幕上出现了8皇后的92种解法,心里挺高兴的。其实昨天就应该运行成功的,可就是因为一个小小的错误,让我昨天一个上午都没有让它运行成功。这种情况发生很多次了,往往就是因为那么一点点不经意的失误,足以让很多东西前功尽弃。这次主要是向上一行推时忘记把行数向前推进一位。昨天还有一个主要的错误是错误的使用了迭代,出现了无穷迭代,以至于VS2008一直报告STACK FLOWOVER。今天改了下代码,晚上又完善了一下,已经成功了。这个程序没有借鉴任何思路,完全出于自己的手,因此很有成就感,下面是思路。


 
思路如下:
 1,将第一个皇后摆在第一行的第一个位置上。
 2,再摆下一个皇后,下一个皇后从下一行的第一个位置开始尝试,若找到不与前面的冲突的位置,则放下,并记录该位置,然后寻找下一个皇后的位置。
 3,当摆到某一个皇后从第一个位置到最后一个位置都冲突,则重新摆放上一行的皇后,是上一行的皇后从当前位置向后移动,重复2步骤,若仍然有冲突则重复3。
 4,行数加到第9行时,证明前面的皇后都已经找到位置,此时第一种解法出现。
 5,在第一种解法的基础上,不断移动最后一行的棋子,迫使前面的棋子重新找位置,直到第一行的棋子找不到位置(移动到第九排)时,所有解法都已经出现。

 

下边是代码


 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值