#10 TLE求调

P1219 [USACO1.5] 八皇后 Checker Challenge

_Lazy_zhr_ @ 2024-04-21 17:28:52

#include<bits/stdc++.h>
using namespace std;
int n,ans[100],sum;
bool k(int a,int b)
{
    for(int i=1;i<a;i++)
    if(b==ans[i]||b==a+(ans[i]-i)||b==i+ans[i]-a)
    return false;
    return true;
}
void dfs(int s)
{
    if(s>n)
    {
        sum++;
        if(sum<=3)
        {
            for(int i=1;i<=n;i++)
            cout<<ans[i]<<" ";
            cout<<"\n";
        }
        return ;
    }
    for(int i=1;i<=n;i++)
    if(k(s,i))
    {
        ans[s]=i;
        dfs(s+1);
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    dfs(1);
    cout<<sum;
    return 0;
}

|