dfs70分求助(玄关)
查看原帖
dfs70分求助(玄关)
884813
_luogu_huowenshuo_楼主2025/2/7 12:13
#include<bits/stdc++.h>
using namespace std;
char g[20][20];
int n,cnt,f[50],z[50],a[20],c[20];
void dfs(int x)
{
    if(x>n){cnt++;return;}
    for(int i=1;i<=n;i++) 
        if(g[x][i]=='*'&&!c[i]&&!f[x+i]&&!z[x-i+n]) 
        {
            c[i]=f[x+i]=z[x-i+n]=1;
            dfs(x+1);
            c[i]=f[x+i]=z[x-i+n]=0;
        }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
            cin>>g[i][j];
    dfs(1);
    cout<<cnt;
    return 0;
}

玄关

2025/2/7 12:13
加载中...