#include<stdlib.h>
#define N 100
int flag[N];
void print(int* flag){
int i = 0;
for(; i < N; i++){
if(flag[i] == 1){
printf("%d ",i+1);
}
}
printf("\n");
}
void findSum(int m, int n, int* flag){
if(n < 1 || m < 1){
return;
}
if(m == n){
flag[n - 1] = 1;
print(flag);
flag[n - 1] = 0;
}
flag[n - 1] = 1;
findSum(m-n, n-1, flag );
flag[n - 1] = 0;
findSum(m, n-1, flag );
}
int main(){
findSum(11, 10, flag);
}从1到n的数中找若干个数使其和为m
最新推荐文章于 2021-03-04 23:42:16 发布
本文介绍了一个使用递归方法来寻找所有可能的组合使得这些组合的元素之和等于特定目标值的算法。通过定义一个固定大小的数组来记录每个可能的组合,并利用递归调用实现了对所有可能性的遍历。
6597

被折叠的 条评论
为什么被折叠?



