搜索回溯

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

猜你喜欢

转载自blog.csdn.net/k42946/article/details/80558408
今日推荐