全排列数值有公式 非常简单
但是要求输出具体方案怎么办呢?
用dfs实现很简单,这里只针对不同元素的全排列,有相同的再另外考虑吧
#include<iostream>
#include<algorithm>
using namespace std;
int a[100],visited[100]={0};
int n,m;
int path[100];
void dfs(int cur,int len){
if(len==m){
for(int i=0;i<len;i++)
cout<<path[i]<<ends;
cout<<endl;
return;
}
for(int i=0;i<n;i++){//从0开始
if(visited[i]==0){
visited[i]=1;
path[len]=a[i];
dfs(i,len+1);
visited[i]=0;
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);//使字典序最小
dfs(0,0);
}