將N個皇后放在西洋棋棋盤上
棋盤中任何橫列、直行、以及斜線都只能有一個皇后
請修改範例程式
算出有幾種放置方式
若無解則答案為0
hint:
#include#define MAX 12 /* q[i] 記錄的是在第 i 列 (row) 出現的皇后,要擺在第幾行 (column) */ /* 譬如,q[] 的內容如果是 {2, 0, 3, 1},表示四個皇后分別放在棋盤的 (0,2), (1,0), (2,3), (3,1) 四個位置 */ int q[MAX] = {0}; int N; void place(int row); int valid(int row, int col); int main(void) { scanf("%d", &N); place(0); /* printf(???); */ return 0; } /* 判斷目前的狀況下,如果在 row, col 位置放入新的皇后 是否會和之前的皇后衝突 如果是合法的放置方式 return 1; 如果有衝突 return 0; */ int valid(int row, int col) { int i; for (i=0; i<=row-1; i++) { /* if ( ??? ) return 0; */ } return 1; } void place(int row) { int j; if (row == N) { /* ??? */ } else { for (j=0; j Input
N
N為1~12的正整數
Output
有幾種擺法
(不須加換行)
Sample Input Download
Sample Output Download
Tags
Discuss