真心简单的DFS。。。
其他的什么都没有
不过自己变量取名字真是... ...low爆了
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int hang,num,sum;
long long sumplan;
char a[9][9];
int cunzai[9]; ///判断这一列是否已经被占用
void dfs(int pri)
{
if(sum==num)
{
sumplan++;
return ;
}
int k,kk;
for(k=pri; k<=hang; k++)
for(kk=1; kk<=hang; kk++)
{
if(a[k][kk]=='#'&&cunzai[kk]==0)
{
sum++;
cunzai[kk]=1;
dfs(k+1);
sum--;
cunzai[kk]=0;
}
}
return;
}
main()
{
while(cin>>hang>>num&& hang!=-1&&num!=-1)
{
sumplan=0;
int i,j;
memset(a,0,sizeof(a));
memset(cunzai,0,sizeof(cunzai));
for(i=1; i<=hang; i++)
for(j=1; j<=hang; j++)
cin>>a[i][j];
dfs(1);
cout<<sumplan<<endl;
}
return 0;
}