n∗
n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n
n 個黑皇后和 n
n 個白皇后,使任意的兩個黑皇后都不在同一行、同一列或同一條對角線上,任意的兩個白皇后都不在同一行、同一列或同一條對角線上。問總共有多少種放法?n
n 小於等於 88。
輸入的第一行為乙個整數 n
n,表示棋盤的大小。
接下來 n
n 行,每行 n
n 個 0
0 或 1
1 的整數,如果乙個整數為1
1,表示對應的位置可以放皇后,如果乙個整數為 0
0,表示對應的位置不可以放皇后。
輸出乙個整數,表示總共有多少種放法。
41 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
樣例輸出1
2
樣例輸入2
41 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 共有若...