标签:
Input
Output
Sample Input
2 1 #. .# 4 4 ...# ..#. .#.. #... -1 -1
Sample Output
2
1
由于数据很小,直接DFS便好!
//Asimple #include <iostream> #include <string.h> using namespace std; int n, T, num, cnt, p; char Map[10][10]; int vis[10];//记录同一列是否有过棋子 using namespace std; void DFS(int k) { if( num == p ) { cnt ++ ; return ; } if( k >= n ) return ;//边界 for( int i=0; i<n; i++) { if(!vis[i] && Map[k][i]==‘#‘) { vis[i] = 1 ; num ++ ; DFS(k+1); num -- ; vis[i] = 0 ; } } DFS(k+1); } int main() { while( cin >> n >> p ) { if( n == -1 && p == -1 ) break ; for (int i=0; i<n; i++) for(int j=0; j<n; j++) cin >> Map[i][j] ; memset(vis,0,sizeof(vis)); cnt = 0 ; num = 0 ; DFS(0); cout << cnt << endl ; } return 0; }
标签:
原文地址:http://www.cnblogs.com/Asimple/p/5528323.html