POJ - 1321 深度优先搜索入门
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; int book[9],n,m,o; char map[9][9]; void dfs(int num,int y){ if(num==m){ o++; return ; } if(y>n) return ; for(int i=1;i<=n;i++){ if(map[y][i]=='#'&&book[i]==0){ book[i]=1; dfs(num+1,y+1); book[i]=0; } } dfs(num,y+1); } int main(){ while(cin>>n>>m&&(n!=-1||m!=-1)){ o=0; memset(book,0,0); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>map[i][j]; dfs(0,1); cout<<o<<endl; } return 0; }