标签:space clu max 八皇后问题 str amp for scanf printf
类似于八皇后问题,区别是这里棋数不等于行数,而且不用考虑对角线
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> using namespace std; const int maxn=10; string ss[maxn]; bool vis[maxn]; int n,m; int tot=0; void dfs(int cur,int num) { if(num==n) { if(cur==m) tot++; return; } for(int i=0;i<n;i++) if(!vis[i]&&ss[num][i]==‘#‘) { vis[i]=1; dfs(cur+1,num+1);//取这个 vis[i]=0; } dfs(cur,num+1);//不取这个 } int main() { while(~scanf("%d%d",&n,&m)) { if(n==-1&&m==-1) break; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) cin >> ss[i]; tot=0; dfs(0,0); printf("%d\n",tot); } return 0; }
标签:space clu max 八皇后问题 str amp for scanf printf
原文地址:http://www.cnblogs.com/Wangwanxiang/p/7455122.html