在C ++中通过重复减法使所有元素相同后找到最大数组和

假设我们有一个n个元素的数组。找到所有元素的最大可能和,以使所有元素都相同。只有允许的操作才能选择任意两个元素,并用两者的绝对差值替换其中较大的一个。假设元素像[9,12,3,6]。然后输出将为12。因此首先将A [1]替换为A [1] – A [3] = 12 – 6 =6。所以现在元素是[9,6,3,6],然后替换A [ 3],其中A [3] – A [2] = 6 – 3 =3。因此元素为[9,6,3,3]。然后将A [0]替换为A [0] – A [1] = 9 – 6 =3。因此元素为[3,6,3,3]。最后,将A [1]替换为A [1] – A [3] = 6 – 3 =3。因此元素为[3,3,3,3]。所以都一样。和是12

如果我们分析该运算,则将为A [i] = A [i] – A [j],其中A [i]> A [j]。因此,我们将取两个数字,然后用它们的绝对差替换较大的值。然后重复这些步骤,直到所有步骤都相同为止。

示例

#include<iostream>

#include<algorithm>

using namespace std;

int findSameElement(int arr[], int n) {

   int gcd_val = arr[0];

   for (int i = 1; i < n; i++)

   gcd_val = __gcd(arr[i], gcd_val);

   return gcd_val;

}

int getMaxSum(int arr[], int n) {

   int value = findSameElement(arr, n);

   return (value * n);

}

int main() {

   int arr[] = {3, 9, 6, 6};

   int n = sizeof(arr)/sizeof(arr[0]);

   cout << "The maximum sum is: " << getMaxSum(arr, n);

}

输出结果

The maximum sum is: 12

以上是 在C ++中通过重复减法使所有元素相同后找到最大数组和 的全部内容, 来源链接: utcz.com/z/316596.html

回到顶部