8皇后問題

2021-08-13 21:20:08 字數 634 閱讀 1982

8皇后問題: 在乙個8*8的棋盤上如何安置8個皇后(不允許任何兩個皇后在同一列,同一行,同一斜線(斜率為正負一))

思路:用一維陣列的下標和值表示 皇后的座標(0,0)--(7,7)

例如a[1]=0,表示(1,0)。

暴力8的8次方種情況,用二進位制表示,即00000000---77777777

十進位制表示0----(pow(8,8)-1)

for迴圈0----(pow(8,8)-1),對其中的每個數轉化為二進位制

結合下標來表示8個皇后的具體位置,例如00000000表示8個皇后在(x,0)上(0<=x<=7)

這樣表示皇后位置已經去除了皇后位於同一列的情況,

只需再去除斜線和橫向情況即可,橫向只需去除a[i]==a[j](i!=j)情況即可,

而斜向則考慮斜率,即去除 abs(j-i)==abs(a[j]-a[i])即可

**如下

#include#includeint a[8];

int ju(int a)

}return 1;

}int main()

if(ju(a))

}printf("%d\n",sum);

return 0;

}

8皇后問題

會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b1b2.b8,其中bi為相應擺法中第i行皇后所處的列數。已經知道8皇后...

8皇后問題

8 皇后問題 描述 八皇后問題是大數學家高斯於1850年提出來的。該問題是在8 8的西洋棋棋盤上放置8個皇后,使得沒有乙個皇后能 吃掉 任何其他乙個皇后,即沒有任何兩個皇后被放置在棋盤的同一行 同一列或同一斜線上。輸出8皇后問題所有結果。輸入 沒有輸入。輸出 每個結果第一行是no n 的形式,n表示...

8皇后問題

在n n的棋盤上放置彼此不受攻擊的n個皇后,按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於在n n格的棋盤上放置n個皇后,任何2個皇后不放在同一行或同一列或同一斜線上。將每一種方法都輸出 這個問題我在網上看到了大神的方法,下面是 僅限於n 13的情況 n 8時...