在 C++ 中查找交换后使两个数组之和相同的元素对
假设我们有两个元素数量不同的数组。我们必须找到一对元素 (x, y),其中 x 存在于第一个数组中,y 存在于第二个数组中。选择这对元素的条件是:在两个数组之间交换这些元素后,这两个数组的和将相等。
例如,第一个数组 A 包含 [4, 1, 2, 2, 1, 1],B 包含 [3, 3, 6, 3],则 A 的和为 11,B 的和为 15。如果我们取 (1, 3) 这对,并在数组之间交换它们,则和将是:[4, 3, 2, 2, 1, 1] = 13,[1, 3, 6, 3] = 13,它们相等。
为了解决这个问题,我们将遍历数组并检查所有可能的元素对,比较新的和或查找具有该差值的另一对。
示例
#include<iostream>
using namespace std;
int arraySum(int arr[], int n) {
int sum = 0;
for (int i = 0; i < n; i++)
sum += arr[i];
return sum;
}
void getPair(int A[], int n, int B[], int m) {
int sum_first = arraySum(A, n);
int sum_second = arraySum(B, m);
int newsum_first, newsum_second, first, second;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
newsum_first = sum_first - A[i] + B[j];
newsum_second = sum_second - B[j] + A[i];
if (newsum_first == newsum_second) {
first = A[i];
second = B[j];
}
}
}
cout << "(" << first << ", " << second << ")";
}
int main() {
int A[] = { 4, 1, 2, 2, 1, 1 };
int n = sizeof(A) / sizeof(A[0]);
int B[] = { 3, 3, 6, 3 };
int m = sizeof(B) / sizeof(B[0]);
getPair(A, n, B, m);
}输出
(1, 3)
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP