话不多说,上板子
第一种:普通排列
#include <bits/stdc++.h>
using namespace std;
int n,m,a[1000000+5];
bool flag[1000000+5];
void dfs(int t){//
if(t==m+1){
for(int i=1;i<=m;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(!flag[i]){
flag[i]=1;
a[t]=i;
dfs(t+1);
flag[i]=0;
}
}
}
int main(){
cin>>n>>m;
dfs(1);
return 0;
}
第二种:全排列
#include <bits/stdc++.h>
using namespace std;
int n,m,a[1000000+5];
bool flag[1000000+5];
void dfs(int t){//
if(t==n+1){
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
cout<<endl;
return;
}
for(int i=1;i<=n;i++){
if(!flag[i]){
flag[i]=1;
a[t]=i;
dfs(t+1);
flag[i]=0;
}
}
}
int main(){
cin>>n;
dfs(1);
return 0;
}