檢查一個(gè)如下的6 x 6的跳棋棋盤,有六個(gè)棋子被放置在棋盤上,使得每行、每列只有一個(gè),每條對(duì)角線(包括兩條主對(duì)角線的所有平行線)上至多有一個(gè)棋子。
上面的布局可以用序列2 4 6 1 3 5來描述,第i個(gè)數(shù)字表示在第i行的相應(yīng)位置有一個(gè)棋子,如下:
行號(hào) 1 2 3 4 5 6
列號(hào) 2 4 6 1 3 5
這只是跳棋放置的一個(gè)解。請(qǐng)編一個(gè)程序找出所有跳棋放置的解。并把它們以上面的序列方法輸出。解按字典順序排列。請(qǐng)輸出前3個(gè)解。最后一行是解的總個(gè)數(shù)。
特別注意: 對(duì)于更大的N(棋盤大小N x N)你的程序應(yīng)當(dāng)改進(jìn)得更有效。不要事先計(jì)算出所有解然后只輸出(或是找到一個(gè)關(guān)于它的公式),這是作弊!
6
2 4 6 1 3 5 3 6 2 5 1 4 4 1 5 2 6 3 4