八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯2023年提出:在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。
高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。現代教學中,把八皇后問題當成乙個經典遞迴演算法例題。
演算法分析:陣列a、b、c分別用來標記衝突,a陣列代表列衝突,從a[0]~a[7]代表第0列到第7列,如果某列上已經有皇后,則為1,否則為0;
陣列b代表主對角線衝突,為b[i-j+7],即從b[0]~b[14],如果某條主對角線上已經有皇后,則為1,否則為0;
陣列c代表從對角線衝突,為c[i+j],即從c[0]~c[14],如果某條從對角線上已經有皇后,則為1,否則為0;
另優化:第乙個皇后在1~4格,最後*2,即為總解數
using system;
class queen
if (x == size) //沒有合適的位置
//回朔
queen[y]=-1;
y--;
}
else
", eight.amount));
console.read();
八皇后演算法
imports system.math public class eightqueen dim topnum as int16 7 dim printb as boolean dim j2 as int16 0 dim eightqueenplace2 topnum 2 topnum 2 topnu...
八皇后演算法
1.回溯法 回溯法,又被稱為 試探法 解決問題時,每進行一步,都是抱著試試 或者這麼走下去肯定達不到目標,立刻做回退操作重新選擇。這種走不通 就回退再走的方法就是回溯法。問題 列舉集合 中所有子集的問題中 使用回溯法。從集合的開頭元素開始,對每個元素都有兩直到集合最後乙個元素。其中的每個操作都可以看...
回溯演算法 八皇后
總時間限制 1000ms 記憶體限制 65536kb 描述 會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b 1b2....