回溯實現八皇后問題(C )

2022-09-02 18:18:10 字數 934 閱讀 5585

以下利用回溯解決八皇后問題。總共有92種結果。 printqueen 是列印函式,isconfict 是用來判斷是否衝突(在同一直線和斜線則有衝突)

eightqueen 為主函式,

演算法思路: 先把第乙個皇后放在(0,0)的位置。然後從第一行往下找,如果成功,則繼續往下探索。一直到第八行,然後回溯。

如果回溯到第一行,說明第乙個皇后在(0,0)的所有情況全部已經列出。接著遍歷(0,1)一直到(0,7)

public

class program

;static

void printqueen()

**********====

", count));

for (int i = 0; i < 8; i++)

console.write("

@ ");

while (n < 8)

console.writeline("");

}console.writeline("

********************===

");}

static

bool isconfict(int x2, int y2)

return

false;

}static

void eightqueen()

else

if (i >= 7) //

成功也要回溯

if (i <= 0) //

如果回溯到了第一行,column++

}if (m >= 8 ) //失敗}

if (i < -1)

break;

}console.writeline("

done

");

}static

void main()

}

回溯 八皇后問題

八皇后問題 國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。分析 八皇后問題是回溯演算法的典型案例。我想我們在自己做的過程中,是這樣的 是先從 0,0 這個座標開始排放皇后,然後 1...

八皇后問題 回溯

在劉汝佳老師的書中對於8皇后問題的分析 我感覺非常經典 8皇后問題可行的解 92個 一共有3種思考的出發點 從64個格仔中選乙個子集,使得 子集中恰好有8個格仔,且任意兩個選出的格仔都不在同一行,同一列或同一對角線上 這正是子集的列舉問題。然而,64個格仔的子集有264個,太大了,這並不是乙個很好的...

八皇后問題(回溯)

八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。可設定乙個陣列a i j,代表第i行第j列放置棋子。先按行從上往下的順序,每遞迴一次,在每一行的某一列放乙個棋...