2 1#..#4 4...#..#..#..#...-1 -1Sample Output21
//感觉就是DFS的典型题
#include <cstdio>#include <iostream>#include <cstring>using namespace std;int n,k,ans;char map[12][12];int vis[12];int DFS(int i,int c){ if(c >= k) { ans++; return 0; } int x,y; for(x = i;x < n;x++) for(y = 0;y < n;y++) if(!vis[y] && map[x][y]=='#') { vis[y]=1; DFS(x+1,c+1); vis[y]=0; } return 0; } int main(){ while(scanf("%d%d",&n,&k) && n!=-1) { ans=0; memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) scanf("%s",map[i]); DFS(0,0); PRintf("%d/n",ans); } return 0;}
新闻热点
疑难解答