#include<iostream>
#include<cstring>
using namespace std;
const int N=22;
int n,k;
int res,cnt;
char s[N][N];
bool col[N];

void dfs(int u){
    if(cnt == k){
        res++;
        return ;
    }
    if(u==n) return ;
    for(int i=0;i<n;i++){
        if(s[u][i] == '#' && !col[i]){
            cnt++;
            col[i] = true;
            dfs(u+1);
            col[i] = false;
            cnt--;
        }
    }
    dfs(u+1);
}

int main(){
    
    while(scanf("%d%d",&n,&k)){
        if(n==-1 && k==-1) break;
        for(int i=0;i<n;i++) scanf("%s",s[i]);
        res = cnt = 0;
        memset(col,false,sizeof col);
        dfs(0);
        printf("%d\n",res);
    }
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐