题目链接:
题解:
1 #include2 #include 3 char mat[15][15]; 4 bool col[15]; 5 int n, k, ans; 6 7 void dfs(int line, int cnt){ 8 if(cnt == k){ 9 ans++;10 return;11 }12 while(line < n){13 for(int i = 0; i < n; i++){14 if(mat[line][i] == '#' && col[i] == false){15 col[i] = true;16 dfs(line+1, cnt+1);17 col[i] = false;18 }19 }20 line++;21 }22 }23 24 int main(){25 while(~scanf("%d%d", &n, &k)){26 if(n == -1 && k == -1) break;27 memset(mat, 0, sizeof(mat));28 memset(col, 0, sizeof(col));29 for(int i = 0; i < n; i++) scanf("%s", mat[i]);30 ans = 0;31 dfs(0, 0);32 printf("%d\n", ans);33 }34 35 return 0;36 }