棋盘问题 poj1321

来源:互联网 发布:淘宝部门及职能 编辑:程序博客网 时间:2024/06/08 15:59
<pre name="code" class="html">#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <stack>#include <queue>#include <vector>#include <iostream>#include <algorithm>using namespace std;bool chess[10][10];bool visit_col[10];int status=0;int k,n;void BFS(int row,int num){    if(num==k)    {        status++;        return ;    }    if(row>n) return ;    for(int i=1;i<=n;i++)        if(chess[row][i]&&!visit_col[i])    {        visit_col[i]=true;        BFS(row+1,num+1);        visit_col[i]=false;    }    BFS(row+1,num);    return ;}int main(){    while(~scanf("%d%d",&n,&k))    {        status=0;        if(n==-1&&k==-1) break;        memset(chess,false,sizeof(chess));        memset(visit_col,false,sizeof(visit_col));        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)        {            char c;            cin>>c;            if(c=='#') chess[i][j]=true;        }        BFS(1,0);        printf("%d\n",status);    }    return 0;}


                                             
0 0
原创粉丝点击