給定乙個 n × n 的棋盤,請你在上面放置 n 個棋子,要求滿足:
上圖給出了當 n = 6 時的一種解決方案,該方案可用序列 2 4 6 1 3 5 來描述,該序列按順序給出了從第一行到第六行,每一行擺放的棋子所在的列的位置。
請你編寫乙個程式,給定乙個 n×n 的棋盤以及 n 個棋子,請你找出所有滿足上述條件的棋子放置方案。
共一行,乙個整數 n。
共四行,前三行每行輸出乙個整數序列,用來描述一種可行放置方案,序列中的第 i 個數表示第 i 行的棋子應該擺放的列的位置。
這三行描述的方案應該是整數序列字典序排在第
一、第二、第三的方案。
第四行輸出乙個整數,表示可行放置方案的總數。
運用dfs思想從第1行開始對每一列進行列舉判斷
#include
#include
using
namespace std;
#define x row
#define y column
#define p primary_diagonal
#define s secondary_diagonal
const
int n =15;
int n;
int cnt, a[n]
;//cnt表示可通過方案數,a[n]表示具體方案
int col[n]
, p[
2* n]
, s[
2* n]
;//在n * n矩陣中,斜率為1的對角線有2n - 1條,斜率為-1的對角線亦然
void
bfs(
int x)
//定義深搜函式
return;}
for(
int y =
1; y <= n;
++ y)
//每行從第1列開始列舉列}}
intmain()
1432 棋盤挑戰
給定乙個 n n 的棋盤,請你在上面放置 n 個棋子,要求滿足 上圖給出了當 n 6 時的一種解決方案,該方案可用序列 2 4 6 1 3 5 來描述,該序列按順序給出了從第一行到第六行,每一行擺放的棋子所在的列的位置。請你編寫乙個程式,給定乙個 n n 的棋盤以及 n 個棋子,請你找出所有滿足上述...
1432 棋盤挑戰
給定乙個 n n n n 的棋盤,請你在上面放置 n n 個棋子,要求滿足 1 2 3 4 5 6 1 o 2 o 3 o 4 o 5 o 6 o 上圖給出了當 n 6 n 6 時的一種解決方案,該方案可用序列2 4 6 1 3 5來描述,該序列按順序給出了從第一行到第六行,每一行擺放的棋子所在的列...
AcWing 1432 棋盤挑戰
給定乙個 n n的棋盤,請你在上面放置 n 個棋子,要求滿足 1 2 3 4 5 6 1 o 2 o 3 o 4 o 5 o 6 o 上圖給出了當 n 6n 6 時的一種解決方案,該方案可用序列2 4 6 1 3 5來描述,該序列按順序給出了從第一行到第六行,每一行擺放的棋子所在的列的位置。請你編寫...