标签:
dfs的问题
需要注意的是在dfs的时候某个位置可以不放旗子
直接进行下一步dfs
#include <iostream> #include <cstdio> #include <cstring> int x[10]; int tot,n,lol,sum; char m[10][10]; void dfs(int row,int lol) { int i; if(lol==tot) { sum++; return; } if(row>=n) return; for(i=0;i<n;i++) { if(m[row][i]=='#'&&x[i]==0) { x[i]=1; // lol++; dfs(row+1,lol+1); x[i]=0; } } dfs(row+1,lol); } int main() { int i; while(scanf("%d%d",&n,&tot)!=EOF) { if(n==-1&&tot==-1) break; for(i=0;i<n;i++) scanf("%s",m[i]); memset(x,0,sizeof(x)); sum=0; dfs(0,0); printf("%d\n",sum); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/whereyousink/article/details/47258665