題目描述
乙個如下的 6 \times 66×6 的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列有且只有乙個,每條對角線(包括兩條主對角線的所有平行線)上至多有乙個棋子。
上面的布局可以用序列 2\ 4\ 6\ 1\ 3\ 52 4 6 1 3 5 來描述,第 ii 個數字表示在第 ii 行的相應位置有乙個棋子,如下:
行號 1\ 2\ 3\ 4\ 5\ 61 2 3 4 5 6
列號 2\ 4\ 6\ 1\ 3\ 52 4 6 1 3 5
這只是棋子放置的乙個解。請編乙個程式找出所有棋子放置的解。
並把它們以上面的序列方法輸出,解按字典順序排列。
請輸出前 33 個解。最後一行是解的總個數。
輸入格式
一行乙個正整數 nn,表示棋盤是 n \times nn×n 大小的。
輸出格式
前三行為前三個解,每個解的兩個數字之間用乙個空格隔開。第四行只有乙個數字,表示解的總數。
輸入輸出樣例
輸入 #1複製
6輸出 #1複製
2 4 6 1 3 5
3 6 2 5 1 4
4 1 5 2 6 3
4說明/提示
【資料範圍】
對於 100%100% 的資料,6 \le n \le 136≤n≤13。
題目翻譯來自nocow。
usaco training section 1.5
#include
#include
#include
using
namespace std;
int a[14]
;int ans[14]
;int b[25]
;int c[25]
;int n;
int countl=0;
void
dfs(
int step)
countl++
;return;}
for(
int i=
1;i1;i++)}
return;}
intmain()
八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...
八皇后問題
include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...
八皇后問題
package quess 由於八個皇后的任意兩個不能處在同一行,那麼這肯定是每乙個皇后佔據一行。於是我們可以定義乙個陣列columnindex 8 陣列中第i個數字表示位於第i行的皇后的列號。先把columnindex的八個數字分別用0 7初始化,接下來我們要做的事情就是對陣列columninde...