POJ1321 棋盘 简单DFS

真心简单的DFS。。。

其他的什么都没有

不过自己变量取名字真是... ...low爆了

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int hang,num,sum;
long long sumplan;
char a[9][9];
int cunzai[9];  ///判断这一列是否已经被占用
void dfs(int pri)
{
    if(sum==num)
    {
        sumplan++;
        return ;
    }
    int k,kk;
    for(k=pri; k<=hang; k++)
        for(kk=1; kk<=hang; kk++)
        {
            if(a[k][kk]=='#'&&cunzai[kk]==0)
            {
                sum++;
                cunzai[kk]=1;
                dfs(k+1);
                sum--;
                cunzai[kk]=0;
            }
        }
    return;
}
main()
{
    while(cin>>hang>>num&& hang!=-1&&num!=-1)
    {
        sumplan=0;
        int i,j;
        memset(a,0,sizeof(a));
        memset(cunzai,0,sizeof(cunzai));
        for(i=1; i<=hang; i++)
            for(j=1; j<=hang; j++)
                cin>>a[i][j];
        dfs(1);
        cout<<sumplan<<endl;
    }
    return 0;
}


猜你喜欢

转载自blog.csdn.net/qq_41548233/article/details/79137332