DFS全排列

#include<stdio.h>
#include<string.h>
#define maxn 100010
int a[maxn];
int col[maxn];
int n;
void DFS(int num)
{
    if (num==n){
        for (int i=0;i<n;i++)    
            printf("%3d",a[i]);
            printf("\n");
    }
    else {
        for (int i=1;i<=n;i++){   
            if (col[i]==0){      
                col[i]=1;         
                a[num]=i;      
                DFS(num+1);        
                col[i]=0;        
            }                     
                                 
        }                          
    }                             
}
int main()
{
    while (~scanf("%d",&n)){
        memset(a,0,sizeof(a));
        memset(col,0,sizeof(col));
        for (int i=1;i<=n;i++){
            col[i]=1;   //col[1]=1;
            a[0]=i;     //a[0]=1;
            DFS(1);
            col[i]=0;
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44146373/article/details/85804136