枚举全排列

#include <stdio.h>

#include <stdlib.h>

void f(int n,int *a,int cur)

{    

     int i,j;

     if(cur==n)

     {        

         for(i=0;i<n;i++)

             printf("%d ",a[i]);        

         printf(" ");    

      }    

     else

         for(i=1;i<=n;i++)

        {        

              int ok=1;        

              for(j=0;j<cur;j++)

                  if(a[j]==i) ok=0;        

              if(ok)

              {

                    a[cur]=i;            

                     f(n,a,cur+1);        

              }    

         } 

 }

int main() {

    int n,i,a[11];

    scanf("%d",&n);

    f(n,a,0);

    return 0;

}

原文地址:https://www.cnblogs.com/zyx1314/p/3535522.html