八皇后問題(一)
問題描述:

要在8*8的國際象棋棋盤中放8個皇后,使任意兩個皇后都不能互相吃掉。規則是皇后能吃掉同一行、同一列、同一對角線的棋子。如下圖即是兩種方案:
思路:
比如我們搞個數組,數組的下表表示多少行,然后數值表示多少列,比如a[4] = 5,意思就代表第四行,第五列
首先看不再同一行、同一列、同一對問題,我們數組依次增大,所以不會同行,至于同列,我們可以推出a[i] = a[j]說明同列
同一對角線我們知道是等腰直角三角形,我們可以退出行之差和列之差會相等,也就是說fabs(a[i] - a[j]) = fabs(i - j);
注意這里的fabs函數是求絕對值
然后我們搜索,如果遇到當前不滿足條件的情況下,就回退下,知道滿足條件為止,也就是說的回溯思想
這里我用最簡單最好理解的代碼實現一次,后面還會用簡單的代碼和遞歸實現
代碼實現:
#include
#include
int a[512] = {1};
int check_
數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。