1019N皇后問題

2021-07-11 09:40:39 字數 944 閱讀 4144

total submission(s) : 83   accepted submission(s) : 40

problem description

在n*n的方格棋盤放置了n個皇后,使得它們不相互攻擊(即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。

你的任務是,對於給定的n,求出有多少種合法的放置方法。

input

共有若干行,每行乙個正整數n≤10,表示棋盤和皇后的數量;如果n=0,表示結束。

output

共有若干行,每行乙個正整數,表示對應輸入行的皇后的不同放置數量。

sample input

185

0

sample output

1

9210

author

cgfsource

2008 hznu programming contest

簡單題意:

由於是中文題,所以這裡不再多說。

解題思路形成過程:

典型的dfs深搜題目,寫出深搜演算法就得以實現了。也就是考慮皇后放置的位置。對於每一行,需要列舉每個可以放置皇后的位置,並且需要判斷當前位置(第i行)是否滿足條件(即判斷這個位置是否與放置好的前i-1行的皇后的位置相衝突).如果衝突,則位置不合適;否則的話,就可以列舉下一行皇后的位置,直至問題的結束。

感想:還是得用搜尋,深度搜

#include

#include

int n,tmp;

int map[11];

void dfs(int k)

else

}if(flag)

dfs(k+1);}}

}int main()

while(scanf("%d",&m),m)

return 0;

}

1019 N皇后問題

1019 n皇后問題 題意 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。對於給定的n,求出有多少種合法的放置方法。思路 考慮皇后放置的位置,對於每一行,需要列舉每個可以放置皇后的位置,而且需要判斷當前位置 第i...

1019 N皇后問題

problem description 在n n的方格棋盤放置了n個皇后,使得它們不相互攻擊 即任意2個皇后不允許處在同一排,同一列,也不允許處在與棋盤邊框成45角的斜線上。你的任務是,對於給定的n,求出有多少種合法的放置方法。input 共有若干行,每行乙個正整數n 10,表示棋盤和皇后的數量 如...

N皇后問題

include define maxqueens 20 define minqueens 4 enum bool typedef struct queendata queendata queendata queens maxqueens 1 int ncount init int init chec...