ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อค้นหาผลรวมสูงสุดของผลิตภัณฑ์แบบคู่ในอาร์เรย์ที่มีค่าลบที่อนุญาต
สำหรับสิ่งนี้เราจะได้รับอาร์เรย์ที่มีจำนวนเต็ม งานของเราคือการหาผลรวมสูงสุดในขณะที่ทำการคูณแบบคู่
ตัวอย่าง
#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; }
ผลลัพธ์
87