不会排序,求调@我

P1219 [USACO1.5] 八皇后 Checker Challenge

ammdyc @ 2023-08-27 11:34:38


#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10; 
int n,t,cnt,f;
int a[14][14],b[14],c[50],d[50];
char s[50][50];
void dfs(int i){
    if(i==n+1){
        f++;
        t++; 
        for(int x=1;x<=n;x++){
            for(int y=1;y<=n;y++){
                if(f<=3&&a[y][x]==1){
                    cout<<y<<" ";
                }
            }
        }
        if(f<=3)
            cout<<endl;
    }   
    int j; 
    for(j=1;j<=n;j++){

        if((!b[j])&&(!c[i+j])&&(!d[j-i+(n-1)])){  
            a[i][j]=1;
            b[j]=1;  
            c[i+j]=1;
            d[j-i+(n-1)]=1;          
            dfs(i+1);
            b[j]=0;
            c[i+j]=0;
            d[j-i+(n-1)]=0;
            a[i][j]=0;
        }
    }

}
int main(){
    cin>>n;
    dfs(1);
    cout<<t;
    return 0;
}

by qzmoot @ 2023-08-27 11:49:52

我寻思这题和排序也没关系啊


by ammdyc @ 2023-08-27 11:56:02

@qzmoot 不是字典序排序吗


by qzmoot @ 2023-08-27 11:59:38

@ammdyc 哦,应该是回溯的问题


by ammdyc @ 2023-08-27 12:08:27

具体什么问题


by Szy0720 @ 2023-08-27 14:37:29

#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10; 
int n,t,cnt,f;
//f,cnt可以不要。t是个数 。 
int a[14],b[14],c[50],d[50];
//a没必要开二维。
//a:列,b:左斜,c:右斜,d:行。 
char s[50][50];//不用s字符数组。 
void dfs(int i){
    if(i==n+1){
        //f++;
        t++;
        if(t<=3){
            //只输出列,读题。 
            for(int i=1;i<=n;i++)
                cout<<a[i]<<" "; 
            cout<<endl;
        }
    }   
    int j; 
    for(j=1;j<=n;j++){
        if((!b[j])&&(!c[i+j])&&(!d[j-i+(n-1)])){  
            a[i]=j;
            //第i个王后在j列。 
            b[j]=1;  
            c[i+j]=1;
            d[j-i+(n-1)]=1;          
            dfs(i+1);
            b[j]=0;
            c[i+j]=0;
            d[j-i+(n-1)]=0;
            //a[i][j]=0;不用。 
        }
    }

}
int main(){
    cin>>n;
    dfs(1);
    cout<<t;
    return 0;
}

by ammdyc @ 2023-08-27 14:39:10

@Szy0720

谢谢!!!


by Szy0720 @ 2023-08-27 14:39:59

@ammdyc 亲测,AC,注释写在代码了。 主要是题没读明白,多读几遍。


|