#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <stack>
#include <string>
#include <string.h>
#include <stdio.h>
#include <cmath>
#include <map>
#include <functional>
#include <set>
#include <limits.h>
#include <math.h>
#include <ctype.h>
using namespace std;
//1140
int d[9];
int n,t;
vector<string> v;
void tran()
{
string t;
for(int i=1;i<=8;i++)
t+=char(d[i]+'0');
v.push_back(t);
}
bool check(int i,int x)
{
for(int j=1;j<x;j++)
if(i==d[j] || abs(i-d[j])==abs(x-j))
return false;
return true;
}
void queen(int x) //放第n列
{
if(x>8)
{
tran();
return ;
}
for(int i=1;i<=8;i++)//第x列要放在i行
{
if(!check(i,x)) continue;
d[x]=i;
queen(x+1);
}
}
int main()
{
queen(1);
while(cin>>n)
{
while(n--)
{
cin>>t;
cout<<v[t-1]<<endl;
}
}
return 0;
}
/**************************************************************
Problem: 1140
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1520 kb
****************************************************************/
题目1140:八皇后
最新推荐文章于 2020-07-15 09:14:31 发布