设计一个算法求解4排列问题,即输出4个数字1、2、3、4的所有排列。
第一种方法
next_permutation(a,a+n)函数
#include<bits/stdc++.h>
using namespace std;
int a[5]= {1,2,3,4};
int main(){
ios::sync_with_stdio(0);
do{
for(int i=0;i<4;i++){
cout<<a[i];
}
cout<<endl;
}while(next_permutation(a,a+4)); //next_permutation(a,a+n)
return 0;
}
第二种方法
回溯法
#include<bits/stdc++.h>
using namespace std;
int a[5]={1,2,3,4};
void dfs(int id){
if(id>=4){
for(int i=0;i<4;i++){
cout<<a[i];
}
cout<<endl;
}else{
int j;
for(int i=id;i<4;i++){
j=a[i];a[i]=a[id];a[id]=j;
dfs(id+1);
j=a[i];a[i]=a[id];a[id]=j;
}
}
}
int main(){
ios::sync_with_stdio(0);
dfs(0);
return 0;
}