首页 > 解决方案 > 使用 C 查找 N 元素数组中所有可能对的总和

问题描述

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

注意,

  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

标签: arraysc

解决方案


最简单的:

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];
    }
}

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


推荐阅读