A - 棋盘问题 POJ - 1321 【dfs】

#include
#include
int n,k;
int cnt,sum;
char map[10][10];
int vis[10];
void dfs(int s){
    if(cnt==k){
        sum++;
        return;
    }
    if(s>=n) return;
    for(int i=0;i         if(map[s][i]=='#'&&!vis[i]){
            vis[i]=1;
            cnt++;
            dfs(s+1);
            cnt--;
            vis[i]=0;
        }
    }
    dfs(s+1);
}
int main(){
while(scanf("%d%d",&n,&k)&&n!=-1&&k!=-1){
    cnt=sum=0;
    memset(vis,0,sizeof(vis));
    for(int i=0;i         scanf("%s",map[i]);
    }
    dfs(0);
    printf("%d\n",sum);
}
    return 0;
}

你可能感兴趣的:(A - 棋盘问题 POJ - 1321 【dfs】)