水水的DFS,中文题目大意不解释。
这是一道八皇后问题的衍生题吧,我觉得是这样,不知道你们怎么看。
直接贴代码:
#include <stdio.h>
#include <string.h>
bool vis[10];
int map1[10][10],n,k,cut;
void DFS(int num,int y)
{
int i;
if(num==k)
{
cut++;
return ;
}
if(y>n)
{
return;
}
for(i=0; i<n; i++)
{
if(map1[y][i]&&!vis[i])
{
vis[i]=1;
DFS(num+1,y+1);
vis[i]=0;
}
}
DFS(num,y+1);
return;
}
int main()
{
int i,j;
while(scanf("%d%d",&n,&k),n!=-1||k!=-1)
{
char s[10];
for(i=0; i<n; i++)
{
scanf("%s",s);
for(j=0; j<n; j++)
{
if(s[j]=='.')
{
map1[i][j]=0;
}
else if(s[j]=='#')
{
map1[i][j]=1;
}
}
}
memset(vis ,0,sizeof(vis));
cut=0;
DFS(0,0);
printf("%d\n",cut);
}
return 0;
}