2 条题解

  • 0
    @ 2025-4-5 19:51:22
    #include<iostream>
    using namespace std;
    int n;
    int clmn[20];
    int myleft[30];
    int myright[30];
    int res[20];
    int cnt;
    void pa(){
    	if(cnt<=3){
    		for(int i=1;i<=n;i++){
    			cout<<res[i]<<' ';
    		}
    		cout<<endl;
    	}
    }
    void dfs(int k){
    	if(k==n+1){
    		cnt++;
    		pa();
    		return;
    	}
    	for(int i=1;i<=n;i++){
    		if(clmn[i]==0 && myleft[k+i]==0 && myright[k-i+n]==0){
    			clmn[i]=1;
    			myleft[k+i]=1;
    			myright[k-i+n]=1;
    			res[k]=i;
    			dfs(k+1);
    			clmn[i]=0;
    			myleft[k+i]=0;
    			myright[k-i+n]=0;
    		}
    	}
    }
    int main(){
    	cin>>n;
    	dfs(1);
    	cout<<cnt;
    	return 0;
    }
    

    信息

    ID
    5277
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    99
    已通过
    56
    上传者