在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