思路:
1.DFS求所有结果,将结果保存起来。
int->string: to_string(int)。
字符串可以直接加起来:
string temp;
for(int i=1;i<=8;i++)
temp+=to_string(a[i]);
2.DFS就是八皇后的DFS。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int a[10];
string res[100];
string temp;
int t=0;
int n;
void queen(int x) //第x行
{
if(x>8)
{
string temp="";
t++;
{for(int i=1;i<=8;i++) temp+=to_string(a[i]);}
res[t]=temp;
return;
}
int i,j;
for(i=1;i<=8;i++) //x,i
{
for(j=1;j<x;j++) //j,a[j]
if((i==a[j]||abs(x-j)==abs(i-a[j])))
break;
if(j>=x)
{
a[x] = i;
queen(x+1);
}
}
}
int main()
{
int T;cin>>T;
queen(1);
while(T--)
{
t=0;
cin>>n;
cout<<res[n]<<endl;
}
}