Posted on 2009-08-23 19:47
Uriel 阅读(983)
评论(5) 编辑 收藏 引用 所属分类:
POJ 、
搜索
纠结了好一会儿。。原来自己连递归的某些东西还不是很透彻。。
基础就不扎实,别说举一反三了
虽然AC了。。但以后还要看
/**//*Problem: 1321 User: Uriel
Memory: 188K Time: 47MS
Language: C++ Result: Accepted*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cnt,i,j,n,k,f[12];
char s[12][12];
void DFS(int r,int P)
{
int j;
if(P==0)
{
cnt++;
return;
}
if(r>=n)return;
for(j=0;j<n;j++)
{
if(!f[j] && s[r][j]=='#')
{
f[j]=1;
// printf("*%d %d*\n",r,P);
DFS(r+1,P-1);
f[j]=0;
}
// printf("*%d %d*\n",r,P);
}
printf("*%d %d*\n",r,P);
DFS(r+1,P);
}
int main()
{
while(1)
{
scanf("%d %d",&n,&k);
if(n==-1 && k==-1)break;
for(i=0;i<n;i++)
{
getchar();
for(j=0;j<n;j++)
{
scanf("%c",&s[i][j]);
}
}
memset(f,0,sizeof(f));
cnt=0;
DFS(0,k);
printf("%d\n",cnt);
}
system("PAUSE");
return 0;
}