https://www.nowcoder.com/practice/fbf428ecb0574236a2a0295e1fa854cb?tpId=40&tqId=21417&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&tab=answerKey
案例是真的坑,输入只有一次,然后输出结果。案例给的输入 n,再输入n纯属在胡扯。
#include<cstdio>
#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int a[10]={1,2,3,4,5,6,7,8};
int b[100][10];
int index;
bool check()
{
for(int i=0;i<8;i++)
{
for(int j=i+1;j<8;j++)
{
if(abs(i-j)==abs(a[i]-a[j]))
return false;
}
}
return true;
}
int main(void)
{
int number=1;
do
{
if(check())
{
for(int i=0;i<8;i++)
{
b[number][i]=a[i];//打表
}
number++;
}
}while(next_permutation(a,a+8));
cin>>index;
for(int i=0;i<8;i++)
cout<<b[index][i];
cout<<endl;
return 0;
}