C语言求m中n个数字的组合

  • Post author:
  • Post category:其他


#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 版权协议,转载请附上原文出处链接和本声明。