这个我们可以简化,就是按照字典序输出,所以就可以规定当前位必须大于上一位,所以我们可以传个参数来保存上一次

#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;
}