这个我们可以简化,就是按照字典序输出,所以就可以规定当前位必须大于上一位,所以我们可以传个参数来保存上一次
#include<iostream>
using namespace std;
const int M=3;
int n=5,m=3;//假定在5个数中选3个数
int a[M];
void dfs(int x,int last)
{
if(x==m)
{
for(int i=0;i<m;i++)
cout<<a[i]<<' ';
cout<<endl;
return ;
}
else
{
for(int i=last+1;i<=n;i++)
{
a[x]=i;
dfs(x+1,i);
}
}
}
int main()
{
dfs(0,0);
return 0;
}