#include <stdio.h>
    int num[10]; //存放数字,默认最大为10个
    
    int m,n; //排列个数 m中n个数字
    
    void dfs(int dep)
    
    {
    
    
    if(dep == n+1) //找到n个数字后输出
    
    {
    
    
    for(int i = 1; i <= n; i++)
    
    {
    
    
    printf(“%d “,num[i]);
    
    }
    
    printf(”\n”);
    
    return ;
    
    }
    
    //因为组合不允许有重复,那么前面数字一定要比后面小
    
    for (num[dep] = num[dep – 1] + 1; num[dep] <= m – n + dep; num[dep]++)
    
    //保证后面数字要比前面的大,而且要给后面的数字留有空间
    
    {
    
    
    dfs(dep + 1);
    
    }
   
    }
    
    int main()
    
    {
    
    
    scanf(“%d %d”,&m,&n);
    
    dfs(1);
    
    }
   
     
   
 
版权声明:本文为qq_42535651原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
