八皇后问题
2016-10-21 22:08
260 查看
#include <bits/stdc++.h> using namespace std; int answer[92]{ 15863724,16837425,17468253,17582463,24683175,25713864,25741863,26174835,26831475, 27368514,27581463,28613574,31758246,35281746,35286471,35714286,35841726,36258174, 36271485,36275184,36418572,36428571,36814752,36815724,36824175,37285146,37286415, 38471625,41582736,41586372,42586137,42736815,42736851,42751863,42857136,42861357, 46152837,46827135,46831752,47185263,47382516,47526138,47531682,48136275,48157263, 48531726,51468273,51842736,51863724,52468317,52473861,52617483,52814736,53168247, 53172864,53847162,57138642,57142863,57248136,57263148,57263184,57413862,58413627, 58417263,61528374,62713584,62714853,63175824,63184275,63185247,63571428,63581427, 63724815,63728514,63741825,64158273,64285713,64713528,64718253,68241753,71386425, 72418536,72631485,73168524,73825164,74258136,74286135,75316824,82417536,82531746,83162574,84136275 }; int main(){ int cases; cin >> cases; for(int kase = 0; kase < cases; ++kase){ int n; cin >> n; cout << answer[n-1] << endl; } } // //int vis[3][20] = {0}; //int R[8] = {0}; //int tot = 0; //int n = 8; // // //void seac(int cur){ // if(cur == 8) { // tot++; // cout<< ""; // for(int i = 0; i < 8; ++i){ // cout << R[i] + 1; // } // cout << ","; // } // else for(int i = 0; i < 8; ++i){ // if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+8]){ // // R[cur] = i; // // vis[0][i] = vis[1][cur+i] = vis[2][cur-i+8] = 1; // seac(cur + 1); // vis[0][i] = vis[1][cur+i] = vis[2][cur-i+8] = 0; // // } // } //} //memset(vis, 0, sizeof(vis)); // memset(R, 0, sizeof(R)); // seac(0); 代码胜于言表,改编自刘汝佳,共92种解法,输出字典序第K大的排序法