编辑代码

#include <stdio.h>
#include <iostream>
#include <cmath>
using namespace std;
 
#define MAXINT 100
int N;
int a[MAXINT];
 
bool place(int row,int col){
	for(int i=1;i<row;i++){
		if(a[i]==col||(row-i==abs(col-a[i]))){
			return false;
		}
	}
	return true;
}
 
void queen(int i){
	if(i==N+1){
		for(int k=1;k<=N;k++){
			printf("%d ",a[k]);
		}
		printf("\n");
		return;
	}
	for(int j=1;j<=N;j++){
		if(place(i,j)){
			a[i]=j;
			queen(i+1);
		}		
	}
}
 
int main(){
	scanf("%d",&N);
	queen(1);	
	return 0;
}