POJ 1321 Chess Problem
1445 ワード
中国語の問題はもう言わない.
解法:DFS
解法:DFS
#include<iostream>
using namespace std;
bool cvis[9]; //
bool chess[9][9]; //
int c,n,k;
void DFS(int row,int num)
{
if(num==k)
{
c++;
return ;
}
if(row>n) return ;
for(int i=1;i<=n;i++)
{
if(!cvis[i]&&chess[row][i])
{
cvis[i]=1;
DFS(row+1,num+1);
cvis[i]=0;
}
}
DFS(row+1,num); // ,
return ;
}
int main()
{
int i,j;
char temp;
while(cin>>n>>k)
{
if( n==-1 && k==-1 ) break;
c=0;
memset(chess,0,sizeof(chess));
memset(cvis,0,sizeof(cvis));
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cin>>temp;
if(temp=='#')
chess[i][j]=1;
}
DFS(1,0);
cout<<c<<endl;
}
return 0;
}