思路:枚举每个皇后能放的位置的所有的92种方法,然后拿哈希表记录每一种方法。
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10;
char g[N][N];
int n,b;
bool col[N],udg[N],dg[N];
unordered_map<int,string>v;
int k = 1;
void dfs(int u)
{
if(u == 8)
{
string s = "";
for(int i = 0;i<8;i++)
for(int j = 0;j<8;j++)
if(g[i][j] != '.')
s += g[i][j];
v[k++] = s;
}
for(int i = 0;i<8;i++)
{
if(!col[i] && !udg[u + i] && !dg[8 - u + i])
{
col[i] = udg[u+i] = dg[8-u+i] = true;
g[u][i] = i + '1';
dfs(u+1);
col[i] = udg[u+i] = dg[8-u+i] = false;
g[u][i] = '.';
}
}
}
int main()
{
for(int i = 0;i<8;i++)
for(int j = 0;j<8;j++)
g[i][j] = '.';
dfs(0);
cin>>n;
while(n--)
{
cin>>b;
cout << v[b] << endl;
}
return 0;
}