C语言版全排列--函数和快捷函数

127 阅读1分钟

 1.next_permutation(num,num+3)含税

#include<bits/stdc++.h>
using namespace std;


void abc1()
{
int num[3]={1,2,3};  
do  
{  
for(int i=0;i<3;i++)
{
cout<<num[i];
}
cout<<endl;
//cout<<num[0]<<" "<<num[1]<<" "<<num[2]<<endl;  
}while(next_permutation(num,num+3));    //全排列函数 

}


int main()
{

abc1(); //全排列函数 

return 0;
}

2.自己写的递归全排列

#include<bits/stdc++.h>

using namespace std;

int n;

bool vis[40];

int a[20];

void pr()

{

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

         {

                  cout<<"    "<<a[i];

                 

         }

         cout<<"\n";

}

void dfs(int x)

{

         if(x>n)

         {

                  pr();

         }

        

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

         {

                 

                          if(vis[i]==0)

                          {

                                   a[x]=i;

                                   vis[i]=1;

                                   dfs(x+1);

                                   vis[i]=0;

                          }

         }

        

        

}

int main()

{

cin>>n;

dfs(1);

return 0;

}