题目https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb?tpId=61&tqId=29558&tPage=3&ru=/kaoyan/retest/1002&qru=/ta/pku-kaoyan/question-ranking
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> A;
int Q[8][8]={0};
bool Judge(int row,int col){
for(int i=0;i<8;i++){
if(Q[i][col]==1){
return false;
}
}
for(int i=row,j=col;i>=0&&j>=0;i--,j--){
if(Q[i][j]==1){
return false;
}
}
for(int i=row,j=col;i>=0&&j<8;i--,j++){
if(Q[i][j]==1)
return false;
}
return true;
}
void DFS(int row,int ans){
if(row==8){
A.push_back(ans);
return;
}
for(int col=0;col<8;col++){
if(Judge(row,col)){
Q[row][col]=1;
DFS(row+1,ans*10+col+1);
Q[row][col]=0;
}
}
}
int main(){
DFS(0,0);
sort(A.begin(),A.end());
int index;
while(scanf("%d",&index)!=EOF){
cout<<A[index-1]<<endl;
}
}