题目: 编写程序,从N个数中选取m个数,打印输出这m个数的所有组合形式。
example: N=5, m=3, array[N] = {1,2,3,4,5},则应该打印输出:
1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5
最容易理解的解法:递归枚举
/*n个数中选取m个数的组合*/
void zuhe(int n, int m)
{
int i;
for(i = n; i >=m; i--)
{
re[m] = i; /*m个数组合的最后一个数可以选择m ... n之间的任意一个*/
if(m > 1) zuhe(i-1, m-1) /*从i-1个数中选取m-1个数的组合*/
else
{
for(k = 0; k < m; k++)
printf("%d ",re[k]);
}
}
}
阅读(8607) | 评论(0) | 转发(1) |