87求调

P1219 [USACO1.5] 八皇后 Checker Challenge

molakeser @ 2024-10-01 18:49:36

最后一个点WA

#include <bits/stdc++.h>

using namespace std;
const int N=20;
int a[N],b[N],c[N],d[N],sum,n;

void s(int i) {
    for(int j=1; j<=n; j++) {
        if(b[j]==0&&c[i+j]==0&&d[i-j+7]==0) {
            a[i]=j;
            b[j]=c[i+j]=d[i-j+7]=1;
            if(i==n) {
                sum++;
                if(sum<=3) {
                    for(int k=1; k<=n; k++) {
                        cout<<a[k]<<" ";
                    }
                    cout<<endl;
                }
            } else s(i+1);
            b[j]=c[i+j]=d[i-j+7]=0;
        }
    }
}
int main() {
    cin>>n;
    s(1);
    cout<<sum;
    return 0;
}

by Moco_jof @ 2024-10-03 13:58:23

嗨嗨嗨!

#include <iostream>
#include <cstdio>
using namespace std;
int a[15],ans,n;
bool b[15],c[100],d[100];
void search(int);
void print();
int main(){
    scanf("%d",&n);
    search(1);
    printf("%d",ans);
    return 0;
}
void search(int i){
    for(int j=1;j<=n;j++){
        if((!b[j])&&(!c[i+j])&&(!d[i-j+n])){
            a[i]=j;
            b[j]=1;
            c[i+j]=1;
            d[i-j+n]=1;
            if(i==n){
                print();
            }else{
                search(i+1);
            }
            b[j]=0;
            c[i+j]=0;
            d[i-j+n]=0;
        }
    }
}
void print(){
    if(ans<=2){
        for(int i=1;i<=n;i++){
            printf("%d ",a[i]);
        }
        printf("\n");
    }
    ans++;
}

|