poj1321 棋盘(dfs)

时间:2024-01-20 18:40:51
#include<iostream>
#include<cstring>
using namespace std;
int n,k,bb[]={},sum=;
char aa[][];
void dfs(int a,int b)
{
if(b>=n)
{
if(a==k)
sum++;
return;
}
for(int i=;i<n;i++)
{
if(!bb[i]&&aa[b][i]=='#')
{
bb[i]=;
dfs(a+,b+);
bb[i]=;
} }
dfs(a,b+);
}
int main()
{
while(cin>>n>>k)
{ int q=;
sum=;
memset(bb,,sizeof(bb));
if(n==-||k==-)break;
for(int i=;i<n;i++)
for(int j=;j<n;j++) cin>>aa[i][j]; dfs(,);
cout<<sum<<endl;
} return ;
}