Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng tối đa của tích từng cặp trong một mảng có phép âm trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm tổng tối đa của tích từng cặp trong một mảng cho phép âm.

Đối với điều này, chúng ta sẽ được cung cấp một mảng chứa các số nguyên. Nhiệm vụ của chúng ta là tìm tổng lớn nhất trong khi thực hiện các phép nhân từng cặp.

Ví dụ

#include <bits/stdc++.h>
#define Mod 1000000007
using namespace std;
//finding the maximum sum
long long int findSum(int arr[], int n) {
   long long int sum = 0;
   //sorting the array
   sort(arr, arr + n);
   int i = 0;
   while (i < n && arr[i] < 0) {
      if (i != n - 1 && arr[i + 1] <= 0) {
         sum = (sum + (arr[i] * arr[i + 1]) % Mod) % Mod;
         i += 2;
      }
      else
         break;
   }
   int j = n - 1;
   while (j >= 0 && arr[j] > 0) {
      if (j != 0 && arr[j - 1] > 0) {
         sum = (sum + (arr[j] * arr[j - 1]) % Mod) % Mod;
         j -= 2;
      }
      else
         break;
   }
   if (j > i)
      sum = (sum + (arr[i] * arr[j]) % Mod) % Mod;
   else if (i == j)
      sum = (sum + arr[i]) % Mod;
   return sum;
}
int main() {
   int arr[] = { -1, 9, 4, 5, -4, 7 };
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << findSum(arr, n);
   return 0;
}

Đầu ra

87