Java解决八皇后问题

八皇后这个问题在这里就不介绍了,解决此问题,用到的是回溯递归算法。

         当我第一次听到回溯时(小编也是小白),我就在想,这是如何回溯的。其实,在这个问题中,回溯就是for循环到最后不满足时会自动退回到上一层的循环,类似于深度优先遍历(这是小编的想法),一开始也会了很多时间去看了看算法,感觉算法看懂了,感觉自己会了,今天突然想用代码实现结果却遇到问题,其实大多数代码都能写出来,就是在位置检测的时候出现了问题,导致花费了很多时间,这就是我们日常生活中的眼高手低所造成的,然而我明白了,要想真正的成为一名大神,我们是要不断的实践的。  小编就不废话了,接下来介绍解决问题的思路。



        回溯法解决此问题,不外乎三个过程:1、回溯递归;2、安全位置检测(判断皇后所处的位置是否安全);3、数组遍历(输出皇后所处的位置)  代码如下


注意一下位置判断,我们只需要判断当前皇后位置之前的危险位置上是否放置了皇后,其之后的位置不予治理,如果你考虑进去了,有可能会出错,会导致解法减少。由于你在回溯是会伤到上一层,但是他它下一层的皇后位置并没有清零,清零的会在上一层满足皇后的位置时发生。

小编认为讲得很详细了,如果还是看不懂,请把你的脑袋撞一下桌子(当然开玩笑啦),睡一觉吧!   我也是一觉睡醒后脑洞大开。当然我也看了好几遍别人的代码,征服困难的道路上是很艰辛的,当你征服了回头看时,一切是那么渺小。                                               QQ:925553434  (欢迎交流)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章