arrays - 使用 C 查找 N 元素数组中所有可能对的总和
问题描述
给定一个包含arr[]
N 个整数的数组,任务是从给定数组中找到所有可能对的总和。
注意,
(arr[i], arr[i])
也被视为有效对。(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
解决方案
最简单的:
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];
}
}
在这里,我们使用加法是可交换的事实,并且知道除了与自身配对的项目外,我们需要将每一对相加两次。
推荐阅读
- c# - 如何在下一次用c#编写的windows服务间隔之前释放所有资源?
- python - 如何让焦油不是无?
- php - 没有登录会话,任何人都无法访问 codeigniter 4 中的控制器
- python - 使用变量动态导入模式
- repository - 什么在 Nexus 存储库中占用空间
- c - 我在下面写了一个 C 代码。我想解释为什么输出是 34 而不是 0 或 42
- parameters - KNIME:根据参数最大化加权平均值
- tensorflow - 在 TimeDistributed 层内正确使用 keras SpatialDropout2D - CNN LSTM 网络
- mysql - MySQL如何查找带后缀的行
- vue.js - Common.js、Vendor.js 和 App.js 在 Build (Nuxt) 上太大