dfs。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int n, k;
string m[13];
bool vis[13];
int cnt;
void dfs(int i, int j)
{
if(i == n && j)
return;
if(i == n && !j)
{
cnt ++;
return;
}
dfs(i + 1, j);
for(int k = 0; k < n; k ++)
if(!vis[k] && m[k][i] == '#')
{
vis[k] = true;
dfs(i + 1, j - 1);
vis[k] = false;
}
}
int main()
{
while(cin >> n >> k && !(n == -1 && k == -1))
{
memset(vis, false, sizeof(vis));
cnt = 0;
for(int i = 0; i < n; i ++)
cin >> m[i];
dfs(0, k);
cout << cnt << endl;
}
// system("pause");
return 0;
}