算法-字典顺序求组合数
字典序求组合数
#include<iostream>
using namespace std;
int num,n,buffer[20]; //n是组合的范围,buffer存储组合的结果,num是挑选的元素个数
void dfs(int k,int j);//j是组合挑选元素的起点
void printDfs();
int t;//t用来记录组合数
int main()
{
cin>>n>>num;
dfs(num,1);
cout<<t;
}
void dfs(int k,int j)//k也是组合的元素个数
{
if(k==0) {printDfs();return;}
for(int i=j;i<=n-k+1;++i)
{
buffer[num-k+1]=i;
dfs(k-1,i+1);
}
}
void printDfs()
{
++t;
for(int i=1;i<=num;++i)
cout<<buffer[i]<<' ';
cout<<endl;
}