给出n,每个n中间排n个数字,排成一列
搜
#include<cstdio>
#include<iostream>
int line[1000];
int n,ok;
void dfs(int t);
int main()
{
scanf("%d",&n);
if((n+1)*n/2|1==0)
dfs(n);
if(ok);
else printf("No Solution");
}
void dfs(int t)
{
if(t==0&&!ok) {
ok=1;
for(int i=1;i<=2*n;i++)
printf("%d ",line[i]);
printf("\n");
return;
}
for(int i=1;i<=2*n-t-1;i++)
{
if(!line[i]&&!line[i+t+1])
{
// printf("%d ",t);
line[i]=t;line[i+t+1]=t;
dfs(t-1);
line[i]=0;line[i+t+1]=0;
}
}
}