棋盤問題 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20645 Accepted: 10246
Description
在一個給定形狀的棋盤(形狀可能是不規則的)上面擺放棋子,棋子沒有區別。要求擺放時任意的兩個棋子不能放在棋盤中的同一行或者同一列,請編程求解對於給定形狀和大小的棋盤,擺放k個棋子的所有可行的擺放方案C。Input
輸入含有多組測試數據。Output
對於每一組數據,給出一行輸出,輸出擺放的方案數目C (數據保證C<2^31)。Sample Input
2 1 #. .# 4 4 ...# ..#. .#.. #... -1 -1
Sample Output
2 1
#include"stdio.h" #include"string.h" #define N 9 char chess[N][N]; int col[N]; int ans,n,k; void dfs(int row,int num) //按行進行搜索 { int i; if(num==k) //又搜到一個答案 { ans++; return ; } if(row==n) //這個判斷放下面,因為row==n時num也許會等於k return ; for(i=0;i