求助

P1219 [USACO1.5] 八皇后 Checker Challenge

wrx20100919 @ 2024-01-16 09:24:26

#include<bits/stdc++.h>
using namespace std;
int n;
int a[100];
int b[100],c[100],d[100];
int sum;
void printf(){
    sum++;
    for(int i=1;i<=n;i++)
    {
        cout<<a[i];
        if(i!=n)cout<<" ";
        else cout<<endl;
    }
}
void search(int i){
    for(int j=1;j<=n;j++){
        if(!b[j]&&!c[i+j]&&!d[i-j+7]){
            a[i]=j;
            b[j]=1;
            c[i+j]=1;
            d[i-j+n-1]=1;
            if(i==n)
            printf();
            else
            search(i+1);
            b[j]=0;
            c[i+j]=0;
            d[i-j+7]=0;
        }
    }
}
int main(){
    cin>>n;
    search(1);
    cout<<sum<<endl;
} 

by uno1 @ 2024-01-16 10:55:59

if(sum<=3)套在

for(int i=1;i<=n;i++) {

cout<<a[i];
if(i!=n)cout<<" ";
else cout<<endl

}

外面


by Keyon_fan @ 2024-02-19 15:09:42

void search(int i){ for(int j=1;j<=n;j++){ if(!b[j]&&!c[i+j]&&!d[i-j+7]){ a[i]=j; b[j]=1; c[i+j]=1; d[i-j+n-1]=1; if(i==n) printf(); else search(i+1); b[j]=0; c[i+j]=0; d[i-j+7]=0; } } } 注意这里


|