我們使用遞歸來做到這壹點:
這個問題要求女王的立場必須和其他女王不同。把兩個皇後想成他們的斜率|=1。
所以我們要寫這個限定條件,用壹個函數來實現:函數裏判斷的是沒有放好的皇後的位置,所以肯定有循環。
既然用遞歸來解題,就應該把這個問題分成同樣的小問題來實現,對吧?
這個小問題是什麽?不難發現,我們要把8個皇後放在8*8的正方形裏,那麽我們就需要知道如何把它們放在8(列)*7(行)裏,然後把最後壹行放在我們事先寫好的判斷函數裏就可以得到了。以此類推,想知道8*7的平方,就要知道8*6是什麽樣的。。。。。。
所以我們以如何放線為單位。
好吧,我們來構建壹個函數回溯(int?t)中的t表示是哪壹行,調用main函數時,第壹個傳入的是0,表示從第壹行開始判斷。
我們開始編寫函數體:
壹排有八個位置,每個位置都要判斷,所以用loop求解。
在這個循環中,我們讓x[t]=i,意思是從這行的第壹個開始判斷。妳把它放好之後,妳要對它進行評判。
是否符合條件。如果它滿足條件,我們就調用函數本身。回溯不通過參數。
T+1表示下壹行。
在判斷下壹行之前,要判斷t是否等於8,也就是最後壹行。如果是最後壹行,我們可以輸出。打印8*8的矩陣(提示寫函數)。皇後的位置用1表示,沒有皇後的用0表示。
這是我自己的經歷?;裏面可能有壹些不恰當的表述。不懂可以問我!(第壹次回答這麽長的問題)