您的位置:首页 > 其它

八皇后问题

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大的排序法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: