我正在尝试创建一个程序来查找其元素总和达到特定目标的所有子集。我的逻辑是:假设我有一个像这样的 6 个元素的数组
{3,2,4,1,1,9}
。
要找到元素总和为数字 5 的子集,我所要做的就是获取第一个元素,如果它的值小于 5,则移至数组的下一个元素,然后查找元素总和的子集差异:第一个元素的 5 值,依此类推。 当然,如果元素的值大于 5,那么我将移动到下一个元素。
我一直在尝试使用递归函数来实现此目的,我将在其中传递数组。
我的问题是我无法理解如何将数组传递到我的函数中以及我应该如何再次使用我的函数移动到下一个元素。老实说,我对这个主题进行了研究,但我找不到任何对我有帮助的东西。
我使用 C 并声明我的函数,如下所示 void subset(int x[],int n);
其中 n
是数组元素的数量。我无法真正理解 x[]
部分。我哥哥告诉我这样做,但我不太明白为什么。
最佳答案
那么您正尝试将数组传递给函数吗?数组的元素或成员将使用方括号“[ ]”引用,例如在数组“int arry[6]={1,2,3,6,5};”中第一个元素是数字“1”,我们可以使用 arry[0] 访问它
恕我直言,您似乎没有在该领域进行“诚实的研究”,我建议您继续,因为数组是几乎每种语言不可或缺的一部分。
下面是一些 C 代码,可以帮助您开始做作业。 int arry[] 是与“int arry”完全不同的类型。括号部分告诉我们它是一个数组。
#include <stdio.h>
int main()
{
int arry[6]={1,2,3,6,5};
myFunction(arry,4);
return 0;
}
int myFunction(int myarr[], int x){
printf("the number %d element is %d",x+1,myarr[4]);
return 0;
}
关于c - 将数组传递给函数和子集求和程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054751/