使用C查找N个元素数组中所有可能对的总和

时间:2020-10-18 06:33:19

标签: arrays c

给定一个由N个整数组成的数组arr[],任务是从给定数组中找到所有可能的对的和。

请注意

  1. (arr[i], arr[i])也被视为有效对。
  2. (arr[i], arr[j])(arr[j], arr[i])被认为是两个不同的对。

示例:

输入:arr[] = {1, 2}
输出:12

所有有效对都是(1, 1)(1, 2)(2, 1)(2, 2)

1 + 1 + 1 + 2 + 2 + 1 + 2 + 2 = 12

1 个答案:

答案 0 :(得分:0)

最简单的

int sum = 0;
int i, j;
for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        sum += yourarray[i] + yourarray[j];
    }
}

优化:

int sum = 0;
int i, j;
for (i = 0; i < n; i++) {
    for (j = i; j < n; j++) {
        sum += ((i == j) ? 1 : 2) * yourarray[i] + yourarray[j];
    }
}

在这里,我们使用加法是可交换的这一事实,并且知道除了一个项目与自身配对之外,我们需要将每对加两次。