我有一个数组,其中元素的数量由用户选择。用户选择元素数后,引入每个元素的值。之后程序应该计算2或3个元素的总和,以便找到它可以在数组中找到的相应值。对于前者,我有以下值: 3,6,4,9 ---> 3 + 6 = 9和4是这个总和的数字!=对于这种类型的例子,我找到了一种计算总和的方法。 如果我改变ex:9,4,6,3 ---> 3 + 6 = 9。以这种方式我没有想法如何从右到左对元素求和,因为3是数组的第N个元素。
代码用C
编写如果有人有任何想法或建议,那将会很棒。谢谢 !
答案 0 :(得分:0)
如果我正确理解你的问题,假设你是用C语言写的,一个简单的方法(但是O(n ^ 3)的成本非常多)将计算每个元素,它的总和与每个其他元素,然后与每个元素进行比较......令人困惑?
对于上述方法,代码类似于以下内容:
for (int i=0; i<ArrayLength; i++){
for (int j=0; j<ArrayLength; j++){
int tempVar = Array[i] + Array[j]; // Calculate every element with every other element
for (int k=0; k<ArrayLength; k++){ // Check if that calculation meets equality with another Array Element.
if (k==i || k==j) continue;
if (tempVar == Array[k])
printf("You have a match for the sum of %d and %d elements with the element in position %d\n",Array[i],Array[j],Array[k]);
}
}
}
请注意,由于代码的成本,上面的代码与实现有用的东西没什么关系,我只是为算法创意提供它。
如果您需要比某些算法更多的帮助,请提供一些代码。
答案 1 :(得分:0)
printf("\nArray size: ",y);
scanf("%d",&y);
printf("\nValues: ",n);
w=0;
for(b=0 ; b < y ; b++)
{
scanf("%d",&a[b]);
printf("\nElements are [%d]: %d \n",b,a[b]);
}
pus=&a[0];
e=*pus;
for(b=0; b < y;b++)
{
d = e + *(pus+1);
if(d==*(pus+b))
printf("\nIt found element [%d]: %d\n",b,d);
else
r=d + *(pus+2);
if(r==*(pus+b))
printf("\nIt found element [%d]: %d\n",b,r);
}