八皇后 n皇后 2n皇后

2021-08-21 09:12:10 字數 1230 閱讀 9535

n∗

n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n

n 個黑皇后和 n

n 個白皇后,使任意的兩個黑皇后都不在同一行、同一列或同一條對角線上,任意的兩個白皇后都不在同一行、同一列或同一條對角線上。問總共有多少種放法?n

n 小於等於 88。

輸入的第一行為乙個整數 n

n,表示棋盤的大小。

接下來 n

n 行,每行 n

n 個 0

0 或 1

1 的整數,如果乙個整數為1

1,表示對應的位置可以放皇后,如果乙個整數為 0

0,表示對應的位置不可以放皇后。

輸出乙個整數,表示總共有多少種放法。

4

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

樣例輸出1

2

樣例輸入2

4

1 0 1 1

1 1 1 1

1 1 1 1

1 1 1 1

樣例輸出2

0

**: 

n皇后**

#include using namespace std;

// n皇后所有位置都可以放

// 帶有不能安放位置的n皇后

int a[8][8];

int n;

int mark[8];

int cnt = 0;//計數

int judge(int row,int column)

return 1;

} void queue(int row)

} }} int main()

return 1;

}int judgewrite(int row,int column)

return 1;

}int queue(int row_black,int row_write)

}} }

else

}} }

int main()

{ scanf("%d",&n);

//如果輸入的帶有不能安放皇后的棋盤

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

for(int j = 0; j < n; j++)

scanf("%d",&a[i][j]);

queue(0,0);

cout<

八皇后問題 2n皇后問題

問題描述 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處在同一行 同一列或同一斜線上。解決思路 解決八皇后問題不難,主要是應用到了遞迴回溯的方法,本質上也是一種列舉法。從棋盤的第一行開始嘗試擺放第乙個皇后,擺放成功之後,遞迴一層,再遵循規則在棋盤第二行來擺放第二個皇后。如...

n皇后與2n皇后問題

題目 在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。給定棋盤的大小n n 13 輸出整數表示有多少種放置方法 n 8是時輸出92 incl...

N皇后 2N皇后問題總結

在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如果n 0,表示結束。output 共有若...