全红求助
查看原帖
全红求助
993941
xingchen666楼主2023/7/19 17:48

代码:

#include<bits/stdc++.h>
using namespace std;

const int N = 100;

int n;
int a[N];
int b[N];
int c[N];
int d[N];

int total=0;

void dfs(int i){
	if(i>n){
		total++;
		if(total<=3){
			for(int k=1;k<=n;k++){
				cout<<a[k]<<' ';
			}
			cout<<endl;
		}
		return;
	}
	for(int j=1;j<=n;j++){
		if(b[j]==0 && c[i+j]==0 && d[i-j+2*n]==0){
			a[i] = j;
			b[j] = 1;
			c[i+j] = 1;
			d[i-j+2*n] = 1;
			
			dfs(i+1);
			
			b[i] = 0;
			c[i+j] = 0;
			d[i-j+n] = 0;
			
		}
	}
}

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

感觉没错误,各位dalao帮忙看一下谢

2023/7/19 17:48
加载中...