题目链接:
poj少有的中文题目,很嗨皮
直接上代码:
1 ///2014.3.30 2 ///poj1321 3 4 #include5 #include 6 using namespace std; 7 8 int N,K; 9 bool board[10][10];10 bool used[10];11 int C;12 13 void init(){14 char temp;15 for(int i=1 ; i<=N ; i++){16 used[i] = false;17 for(int j=1 ; j<=N ; j++){18 cin>>temp;19 if( temp=='#' )20 board[i][j] = true;21 else22 board[i][j] = false;23 }24 }25 C = 0;26 }27 28 void dfs(int r,int num){29 if( num==K ){30 C++;31 return;32 }33 if( r>N )34 return;35 for(int i=1 ; i<=N ; i++){36 if( board[r][i] && !used[i] ){37 used[i] = true;38 dfs(r+1,num+1);39 used[i] = false;40 }41 }42 dfs(r+1,num);43 }44 45 int main()46 {47 // freopen("in","r",stdin);48 // freopen("out","w",stdout);49 50 while( cin>>N>>K && N!=-1 && K!=-1 ){51 init();52 dfs(1,0);53 cout< <