第N个元素的数组,试图从左到右和从右到左添加元素

时间:2017-05-15 11:20:10

标签: c arrays

我有一个数组,其中元素的数量由用户选择。用户选择元素数后,引入每个元素的值。之后程序应该计算2或3个元素的总和,以便找到它可以在数组中找到的相应值。对于前者,我有以下值: 3,6,4,9 ---> 3 + 6 = 9和4是这个总和的数字!=对于这种类型的例子,我找到了一种计算总和的方法。 如果我改变ex:9,4,6,3 ---> 3 + 6 = 9。以这种方式我没有想法如何从右到左对元素求和,因为3是数组的第N个元素。

代码用C

编写

如果有人有任何想法或建议,那将会很棒。谢谢 !

2 个答案:

答案 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);
}