求救!解的总数不对!

P1219 [USACO1.5] 八皇后 Checker Challenge

Ethereal_KQ @ 2023-08-20 12:59:01

#include<bits/stdc++.h>
using namespace std;
int n,ans[14],tot=0;//ans代表最终的结果 tot是答案 
int a[3][28]={0};
void dfs(int t){//t是行数 
    if(t>n){ 
        tot++;
        if(tot<3){
            for(int i=1;i<=n;i++) printf("%d ",ans[i]);
            puts("");
        }
        return;
    }
    for(int i=1;i<=n;i++){
        if((!a[0][i])&&(!a[1][t+i])&&(!a[2][t-i+n])){
            ans[t]=i;
            a[0][i]=1; a[1][t+i]=1; a[2][t-i+n]=1;
            dfs(t+1);
            a[0][i]=0; a[1][t+i]=0; a[2][t-i+n]=0;
        }  }  }
int main(){
    scanf("%d",&n);
    dfs(1);
    printf("%d",&tot);
    return 0;
}

by gjleeee @ 2023-08-25 22:31:56

共两处错误:\ 1、\ 原:

        if(tot<3){

改:

        if(tot<=3){

因:tot自增于判断前\ \ 2、\ 原:

    printf("%d",&tot);

改:

    printf("%d",tot);

因:略


by Ethereal_KQ @ 2023-08-28 08:41:48

谢谢大佬!!


|