C WPF實現回溯演算法解決八皇后問題

2021-06-10 13:26:38 字數 1511 閱讀 4822

運用c#wpf程式設計實現了經典的回溯演算法解決「八皇后問題」

程式執行演示結果如下:

演算法核心**:

namespace nqueen

/// /// 根據皇后數目繪製棋盤函式(暫不使用)

///

/// 皇后數目

public void drawqueen()

}/// /// 初始化演算法資料

///

///

public void inital(int number)

isenableleft = new boolean[number * 2 - 1];

for (int i = 0; i < number * 2 - 1; i++)

isenableright = new boolean[number * 2 - 1];

for (int i = 0; i < number * 2 - 1; i++)

queennumber = number;

}/// /// 設定皇后的位置,如果此皇后已經存在則改變皇后的位置

///

/// 表示第幾個皇后

/// 表示皇后所在的行數

/// 表示皇后所在的列數

public void setqueen(int row,int column)

else

queens[row].name = "queen" + row.tostring();

gridmain.children.add(queens[row]);

gridmain.registername("queen" + row.tostring(), queens[row]);

grid.setrow(queens[row], row);

grid.setcolumn(queens[row], column);

}//public void deletequeen(int queenseq);

/// /// 開始運算按鈕事件

///

///

///

private void button2_click(object sender, routedeventargs e)

/// /// 初始化按鈕事件

///

///

///

private void startbutton_click(object sender, routedeventargs e)

// messagebox.show(output);

}/// /// 放置皇后

///

/// 放置第n行的皇后

public bool putqueen(int row)

for (int col = 0; col < queennumber; col++)

}return false;}}

}

前台**

回溯演算法 八皇后

總時間限制 1000ms 記憶體限制 65536kb 描述 會下西洋棋的人都很清楚 皇后可以在橫 豎 斜線上不限步數地吃掉其他棋子。如何將8個皇后放在棋盤上 有8 8個方格 使它們誰也不能被吃掉!這就是著名的八皇后問題。對於某個滿足要求的8皇后的擺放方法,定義乙個皇后串a與之對應,即a b 1b2....

回溯演算法 八皇后

今天學習了下回溯演算法,順便看了下經典案例 八皇后問題。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。回溯演算法的搜尋邏輯是深度優先,即,從一條路往前走,能進則進,不能進則...

八皇后演算法(回溯)

演算法描述 八皇后是一道很具典型性的題目。它的基本要求是這樣的 在乙個8 8的矩陣上面放置8個物體,乙個矩陣點只允許放置乙個物體,任意兩個點不能在一行上,也不能在一列上,不能在一條左斜線上,當然也不能在一條右斜線上。八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數...