0分求大佬帮助

P1219 [USACO1.5] 八皇后 Checker Challenge

GEZHENHAO @ 2024-07-12 16:07:27

#include<iostream>
using namespace std;
int h[20],l[20],z[30],y[30],s,n;
void pt()
{
    int i;
    if(s<=2)
    {
    for(i=1;i<=n;i++)
    {
        cout<<h[i]<<' ';
    }
    cout<<endl;
    } 
    s++;
}

void dfs(int i)
{   int j;
    for(j=1;j<=n;j++)
    {
        if (!l[j]&&!z[i+j]&&!y[i-j+n])
        {
            h[i]=j;
            l[j]=1;
            z[i+j]=1;
            y[i-j+n]=1;
            if (i==n) 
            {
                pt(); 
                return;
            }      
            else 
            {
               dfs(i+1);
            }
            y[i-j+n]=0;
            z[i+j]=0;
            l[j]=0;
            h[i]=0;
        }
    }
 }
int main()
{ 
    cin>>n;
    dfs(1);
    cout<<s; 
    return 0;
}

每次都只能输出一组

求解!!


by ABCgfed @ 2024-07-12 16:21:41

@GEZHENHAO

#include<iostream>
using namespace std;
int h[20],l[20],z[30],y[30],s,n;
void pt()
{
    int i;
    if(s<=2)
    {
    for(i=1;i<=n;i++)
    {
        cout<<h[i]<<' ';
    }
    cout<<endl;
    } 
    s++;
}

void dfs(int i)
{   int j;
    for(j=1;j<=n;j++)
    {
        if (!l[j]&&!z[i+j]&&!y[i-j+n])
        {
            h[i]=j;
            l[j]=1;
            z[i+j]=1;
            y[i-j+n]=1;
            if (i==n) 
            {
                pt(); 
                y[i-j+n]=0;
                z[i+j]=0;
                l[j]=0;
                h[i]=0;
                return;
            }      
            else 
            {
               dfs(i+1);
            }
            y[i-j+n]=0;
            z[i+j]=0;
            l[j]=0;
            h[i]=0;
        }
    }
 }
int main()
{ 
    cin>>n;
    dfs(1);
    cout<<s; 
    return 0;
}

by GEZHENHAO @ 2024-07-12 16:38:25

感谢,已AC


|