Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में बाएँ और दाएँ पर अगले बड़े के सूचकांक का अधिकतम उत्पाद

इस ट्यूटोरियल में, हम बाएँ और दाएँ पर अगले ग्रेटर के इंडेक्स के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।

इसके लिए हमें पूर्णांकों की एक सरणी प्रदान की जाएगी। हमारा कार्य अधिकतम बाएँ-दाएँ उत्पाद (L(i)*R(i) के साथ तत्व को खोजना है जहाँ L(i) बाईं ओर निकटतम सूचकांक है और वर्तमान तत्व से अधिक है और R (i) दाईं ओर निकटतम सूचकांक है और वर्तमान तत्व से बड़ा)।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define MAX 1000
//finding greater element on left side
vector<int> nextGreaterInLeft(int a[], int n) {
   vector<int> left_index(MAX, 0);
   stack<int> s;
   for (int i = n - 1; i >= 0; i--) {
      while (!s.empty() && a[i] > a[s.top() - 1]) {
         int r = s.top();
         s.pop();
         left_index[r - 1] = i + 1;
      }
      s.push(i + 1);
   }
   return left_index;
}
//finding greater element on right side
vector<int> nextGreaterInRight(int a[], int n) {
   vector<int> right_index(MAX, 0);
   stack<int> s;
   for (int i = 0; i < n; ++i) {
      while (!s.empty() && a[i] > a[s.top() - 1]) {
         int r = s.top();
         s.pop();
         right_index[r - 1] = i + 1;
      }
      s.push(i + 1);
   }
   return right_index;
}
//finding maximum LR product
int LRProduct(int arr[], int n) {
   vector<int> left = nextGreaterInLeft(arr, n);
   vector<int> right = nextGreaterInRight(arr, n);
   int ans = -1;
   for (int i = 1; i <= n; i++) {
      ans = max(ans, left[i] * right[i]);
   }
   return ans;
}
int main() {
   int arr[] = { 5, 4, 3, 4, 5 };
   int n = sizeof(arr) / sizeof(arr[1]);
   cout << LRProduct(arr, n);
   return 0;
}

आउटपुट

8

  1. सी ++ में एक पेड़ में दो गैर-अंतर्विभाजक पथों का अधिकतम उत्पाद

    इस समस्या में, हमें n नोड्स के साथ एक अप्रत्यक्ष कनेक्टेड ट्री T दिया जाता है। हमारा कार्य C++ में एक ट्री में दो गैर-अंतर्विभाजकपथों के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - एक पेड़ में दो अप्रतिच्छेदी पथों का अधिकतम गुणनफल ज्ञात करना। हम सभी गैर-दिलचस्प पथ खोजेंगे

  1. C++ में अधिकतम उत्पाद चौगुनी संख्या ज्ञात कीजिए

    मान लीजिए कि हमारे पास n तत्वों के साथ एक पूर्णांक सरणी है। हमें सरणी में चौगुनी का अधिकतम गुणनफल खोजना है। तो अगर सरणी [3, 5, 20, 6, 10] की तरह है, तो अंतिम उत्पाद 6000 है, और चौगुनी में तत्व 10, 5, 6, 20 है इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी को आरोही क्रम में क्रमबद्ध करें मान

  1. C/C++ में लेफ्ट शिफ्ट और राइट शिफ्ट ऑपरेटर्स

    बाएं शिफ़्ट लेफ्ट शिफ्ट ऑपरेटर में, लेफ्ट ऑपरेंड वैल्यू को राइट ऑपरेंड द्वारा निर्दिष्ट बिट्स की संख्या से बायीं ओर ले जाया जाता है। यहाँ C भाषा में लेफ्ट शिफ्ट ऑपरेटर का उदाहरण दिया गया है, उदाहरण #include <stdio.h> int main() {    int y = 28; // 11100    int i = 0; &n