5546 - I2P_LAB07_1   

Description

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