组合排列数值公式
要求输出具体方案用dfs实现非常简单,这里只针对不同元素
#include<iostream>
#include<algorithm>
using namespace std;
int a[100];
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=cur;i<n;i++){//从cur开始而不是从0开始,这是不同于全排列的地方
path[len]=a[i];
dfs(i+1,len+1);
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);//使字典序最小
dfs(0,0);
}