N个数中选择M个数的组合(1<M<N)

简介:

要求:利用递归算法求出N个数,并从1-N这N个数中,任意取M个数(1<M<N)的所有组合情况,用递归实现!

#include<stdio.h>

const int MAX = 10;
int g[MAX],N,M;
void dfs(int n,int m)
{
//int sum;//和 
for(int i=n;i>=1;i--)
{
g[m] = i;
if(m>1)
{
dfs(i-1,m-1);
}
else
{
for(int j=1;j<=M;j++)
{
printf("%d",g[j]);
//sum+=g[j]; 
}
/*
if(sum == n)
{
for(int j=i;j<=M;j++)
{
printf("%d",g[j]);
}
printf("\n");
}
*/
printf("\n");
}
}



int main()
{
/*
N=5,M=3;
dfs(N,M);
*/

printf("请输入和:");
scanf("%d",&N);
for(M=2;M<N;M++)
{
dfs(N,M);  
}

return 0;

}

















本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366460,如需转载请自行联系原作者

相关文章
|
3月前
|
Java 编译器 C++
位1的个数(C++)
位1的个数(C++)
29 0
|
6月前
|
C++
C++求1到10这10个数之和
C++求1到10这10个数之和
|
8月前
输入2个数,计算这2个数的,和商积差余,
输入2个数,计算这2个数的,和商积差余,
48 0
|
机器学习/深度学习 算法
第k个数
第k个数
102 0
|
算法 Java 编译器
20天刷题计划-191. 位1的个数
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。
|
人工智能 算法 BI
给定一个数组,找出不在数组中的最小的那个数字
这是在TL讨论中Liu xinyu给出的一个例子,觉得思路挺有启发的,所以整理记录一下。 给定一个数组,其内容是一些随机的、不重复的正整数,如: {4, 23, 1, 8, 9, 21, 6, 12} 要求找出不在数组中出现的最小的那个数,比如这个数组中未在数组中出现的最小值是:2 这个问题实际应用的原型可以是一个ID分配系统,其使用一个数组来保存已分配的ID,每次回收就从数组中删除一个元素(O(n)),而分配则需要找到最小的那个可用的ID,就是这个算法要做的事情。
1028 0