POJ 1321 棋盘问题
水水的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; }