Description
Input
Output
Sample Input
2 1 #. .# 4 4 ...# ..#. .#.. #... -1 -1
Sample Output
2 1
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<string> using namespace std; const int INF=0x3f3f3f3f; const int MAXN=30+5; char map[MAXN][MAXN]; int done[MAXN]; int dy[]={-2,-2,-1,-1,1,1,2,2}; int dx[]={-1,1,-2,2,-2,2,-1,1}; int n,m,win,xxx; void dfs(int last,int cur) { if(!last){win+=1;return;} int i,j; for(i=cur;i<n-last+1;i++) { for(j=0;j<n;j++) { if(map[i][j]=='.'||done[j])continue; done[j]=1; dfs(last-1,i+1); done[j]=0; } } } int main() { //freopen("123.txt","r",stdin); int i,j; while(~scanf("%d%d",&n,&m)) { if(n==-1&&m==-1)break; gets(map[0]); for(i=0;i<n;i++) gets(map[i]); win=0; memset(done,0,sizeof(done)); dfs(m,0); printf("%d\n",win); } return 0; }