1. 程式人生 > >南郵 OJ 1733 跳棋

南郵 OJ 1733 跳棋

檢查一個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列最多有一個,每條對角線(包括兩條主對角線的所有平行線)上至多有一個棋子。

0   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)你的程式應當改進得更有效。