粗暴方法,就前面提到的,八層for迴圈,寫入條件,判斷,最終得出結果。
但在後邊實現時候突然卡住,想到八個皇后佔8*8的位置,第乙個皇后隨意到乙個格仔,其他皇后繼續隨意進入到乙個格仔,把問題想成了隨機擺放,所以卡住了,後邊重新簡化問題,直接把各個皇后放在固定一行,問題就直接用簡單的八層迴圈就好。
**如下,可以看到確實實現過程很繁瑣,簡化的話可以寫乙個判斷函式,然後最後呼叫,就不用寫這麼多判斷語句了,這裡就不實現了,
有時間實現一下漢諾塔再繼續總結進來。
int eque()
for(que[2] = 0;que[2] <= 7;++ que[2])
for(que[3] = 0;que[3] <= 7;++ que[3])
for(que[4] = 0;que[4] <= 7;++ que[4])
for(que[5] = 0;que[5] <= 7;++ que[5])
for(que[6] = 0;que[6] <= 7;++ que[6])
for(que[7] = 0;que[7] <= 7;++ que[7])
printf("皇后1:%d 皇后2:%d 皇后3:%d 皇后4:%d 皇后5:%d 皇后6:%d 皇后7:%d 皇后8:%d\n",que[0],que[1],que[2],que[3],que[4],que[5],que[6],que[7]);
tmp ++;}}
}}}}
} }printf("%d種\n",tmp);
return 0;
}
**也沒難度,就照著規則,皇后不能同列(因為已經將皇后放在固定行所以此要求自動滿足),皇后不能對角線,就?了,就這樣。 八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...
八皇后問題
include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...
八皇后問題
package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...