给出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; } } }