描述
檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列只有乙個,每條對角線(包括兩條主對角線的所有平行線)上至多有乙個棋子。
列號1 2 3 4 5 6
-------------------------
1 | | o | | | | |
-------------------------
2 | | | | o | | |
-------------------------
3 | | | | | | o |
-------------------------
4 | o | | | | | |
-------------------------
5 | | | o | | | |
-------------------------
6 | | | | | o | |
-------------------------
上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下:
行號 1 2 3 4 5
6列號 2 4 6 1 3
5這只是跳棋放置的乙個解。請編乙個程式找出所有跳棋放置的解。並把它們以上面的序列方法輸出。解按字典順序排列。請輸出前3個解。最後一行是解的總個數。
特別注意: 對於更大的n(棋盤大小n x
n)你的程式應當改進得更有效。不要事先計算出所有解然後只輸出(或是找到乙個關於它的公式),這是作弊。如果你堅持作弊,那麼你登陸tyvj的帳號將被無警告刪除
輸入格式
乙個數字n (6
<= n <= 13) 表示棋盤是n x n大小的。
輸出格式
前三行為前三個解,每個解的兩個數字之間用乙個空格隔開。第四行只有乙個數字,表示解的總數。
題目分析:
廣搜過之。n=13時貌似1.幾秒出,不用打表對得起誰啊?
源**:
#includeusing
namespace
std;
int ans[20
]; bool vis[20
]; bool add[20],sub[50
]; int
n,num;
void dfs(int
x) }
for (int i=1; i<=n; i++)
} } int
main()
dfs(
1);
printf(
"%d\n
",num);
return0;
}
八皇后 n皇后 2n皇后
n n 的棋盤,棋盤中有一些位置不能放皇后。現在要向棋盤中放入 n n 個黑皇后和 n n 個白皇后,使任意的兩個黑皇后都不在同一行 同一列或同一條對角線上,任意的兩個白皇后都不在同一行 同一列或同一條對角線上。問總共有多少種放法?n n 小於等於 88。輸入的第一行為乙個整數 n n,表示棋盤的大...
八皇后(n皇后)
n皇后問題是經典的遞迴型問題。輸入說明 n代表皇后的數量 輸出說明 每行n個數字,一行代表乙個解。例如2413代表第1行皇后放在第2列,第2行皇后放在第4列,第3行皇后放在第1列,第4行皇后放在第3列。數字都是從1開始的。樣例輸入 4樣例輸出 2413 3142 include include us...
LeetCode演算法 N皇后 N皇后II
n皇后問題研究的是如何將 n?個皇后放置在 n n 的棋盤上,並且使皇后彼此之間不能相互攻擊。給定乙個整數 n,返回所有不同的?n?皇后問題的解決方案。每一種解法包含乙個明確的?n 皇后問題的棋子放置方案,該方案中 q 和 分別代表了皇后和空位。示例 輸入 4 輸出 q 解法 1 q q q.q.解...