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

Sản phẩm tối đa có thể có trong mảng sau khi thực hiện các Thao tác nhất định 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 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