简单搜索:
#include<iostream>
#include<vector>
using namespace std;
int h[10],l[10],sum,n,k;
vector<vector<char>> arr;
void dfs(int x,int y,int s){
if(s==k){
sum++;
return ;
}
for(int i=x;i<=n;i++){
if(i>x){
y=1;
}
for(int j=y;j<=n;j++){
if(arr[i][j]=='#'&&h[i]==0&&l[j]==0){
h[i]=1;
l[j]=1;
dfs(i,j,s+1);
h[i]=0;
l[j]=0;
}
}
}
return ;
}
int main(){
cin>>n>>k;
while(n!=-1&&k!=-1){
arr.resize(n+1);
for(int i=1;i<=n;i++){
arr[i].resize(n+1);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>arr[i][j];
}
}
sum=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(arr[i][j]=='#'){
h[i]=1;
l[j]=1;
dfs(i,j,1);
h[i]=0;
l[j]=0;
}
}
}
cout<<sum<<"\n";
arr.clear();
cin>>n>>k;
}
}