Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm Sản phẩm có thể tối đa trong Mảng sau khi thực hiện các Thao tác nhất định
Đối với điều này, chúng tôi sẽ được cung cấp một mảng có kích thước N. Nhiệm vụ của chúng tôi là thực hiện N-1 phép toán (thay đổi a [j] → a [i] * a [j] và loại bỏ giá trị [i] hoặc chỉ xóa giá trị của [i] (chỉ một lần)) sao cho các giá trị còn lại chỉ là giá trị lớn nhất.
Ví dụ
#include <bits/stdc++.h> using namespace std; //printing operations void MaximumProduct(int a[], int n) { int cntneg = 0; int cntzero = 0; int used[n] = { 0 }; int pos = -1; for (int i = 0; i < n; ++i) { if (a[i] == 0) { used[i] = 1; cntzero++; } if (a[i] < 0) { cntneg++; if (pos == -1 || abs(a[pos]) > abs(a[i])) pos = i; } } if (cntneg % 2 == 1) used[pos] = 1; if (cntzero == n || (cntzero == n - 1 && cntneg == 1)) { for (int i = 0; i < n - 1; ++i) cout << 1 << " " << i + 1 << " " << i + 2 << endl; return; } int lst = -1; for (int i = 0; i < n; ++i) { if (used[i]) { if (lst != -1) cout << 1 << " " << lst + 1 << " " << i + 1 << endl; lst = i; } } if (lst != -1) cout << 2 << " " << lst + 1 << endl; lst = -1; for (int i = 0; i < n; ++i) { if (!used[i]) { if (lst != -1) cout << 1 << " " << lst + 1 << " " << i + 1 << endl; lst = i; } } } int main() { int a[] = { 5, -2, 0, 1, -3 }; int n = sizeof(a) / sizeof(a[0]); MaximumProduct(a, n); return 0; }
Đầu ra
2 3 1 1 2 1 2 4 1 4 5