八皇后這個問題在這裏就不介紹了,解決此問題,用到的是回溯遞歸算法。
當我第一次聽到回溯時(小編也是小白),我就在想,這是如何回溯的。其實,在這個問題中,回溯就是for循環到最後不滿足時會自動退回到上一層的循環,類似於深度優先遍歷(這是小編的想法),一開始也會了很多時間去看了看算法,感覺算法看懂了,感覺自己會了,今天突然想用代碼實現結果卻遇到問題,其實大多數代碼都能寫出來,就是在位置檢測的時候出現了問題,導致花費了很多時間,這就是我們日常生活中的眼高手低所造成的,然而我明白了,要想真正的成爲一名大神,我們是要不斷的實踐的。 小編就不廢話了,接下來介紹解決問題的思路。
回溯法解決此問題,不外乎三個過程:1、回溯遞歸;2、安全位置檢測(判斷皇后所處的位置是否安全);3、數組遍歷(輸出皇后所處的位置) 代碼如下
注意一下位置判斷,我們只需要判斷當前皇后位置之前的危險位置上是否放置了皇后,其之後的位置不予治理,如果你考慮進去了,有可能會出錯,會導致解法減少。由於你在回溯是會傷到上一層,但是他它下一層的皇后位置並沒有清零,清零的會在上一層滿足皇后的位置時發生。
小編認爲講得很詳細了,如果還是看不懂,請把你的腦袋撞一下桌子(當然開玩笑啦),睡一覺吧! 我也是一覺睡醒後腦洞大開。當然我也看了好幾遍別人的代碼,征服困難的道路上是很艱辛的,當你征服了回頭看時,一切是那麼渺小。 QQ:925553434 (歡迎交流)