#include<stdio.h>
#include<string.h>
char p[10][10];
int b[10];
int ans=0,n=0,k=0,shu=0;
void dfs(int m)
{
if(shu==k){
ans++;
return;
}
if(m>n) return;
for(int i=0;i<n;i++)
{
if((p[m][i]=='#')&& (b[i]==0))
{
b[i]=1;
shu++;
dfs(m+1);
b[i]=0;
shu--;
}
}
dfs(m+1);
}
int main()
{
while(scanf("%d%d",&n,&k) && (n!=-1||k!=-1))
{
memset(p,0,sizeof(p));
memset(b,0,sizeof(b));
shu=0;
for(int i=1;i<=n;i++)
scanf("%s",p[i]);
dfs(1);//一定要注意字符串读入的时候是从0
printf("%d\n",ans);
ans=0;
}
return 0;
}
poj1321 深搜
最新推荐文章于 2020-07-10 08:39:27 发布