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

एब्स (i - j) * min(arr[i], arr[j]) का अधिकतम मान C++ में arr [] में खोजें

इस समस्या में, हमें एन पूर्णांक मानों पर जोर देते हुए एक सरणी गिरफ्तारी [] दी जाती है। हमारा कार्य एक सरणी [] में एब्स (i - j) * मिनट (arr [i], arr [j]) का अधिकतम मान ज्ञात करना है।

समस्या का विवरण - हमें दो तत्वों के न्यूनतम मूल्य का अधिकतम उत्पाद मूल्य और उनके सूचकांक के बीच पूर्ण अंतर खोजने की आवश्यकता है। यानी दो मानों i और j के लिए, हमें अधिकतम करने की आवश्यकता है, abs(i - j) * min(arr[i] , arr[j])।

इनपुट

arr[] = {5, 7, 3, 6, 4}

आउटपुट

16

स्पष्टीकरण

The maximum value is 16, between index 0 and 4
=> abs(0 - 4)*min(arr[0], arr[4])
=> 4*min(5, 4) => 4*4 = 16

समाधान दृष्टिकोण

समस्या का एक आसान समाधान नेस्टेड लूप का उपयोग कर रहा है। हम दो लूप लेंगे और i और j के प्रत्येक जोड़े के लिए मान की गणना करेंगे। और फिर पाए गए सभी मानों में से अधिकतम लौटाएं।

यह दृष्टिकोण अच्छा है, लेकिन O(n 2 .) के क्रम का समय जटिल है )।

समस्या का एक प्रभावी समाधान सरणी के अंत से दूसरे की शुरुआत से दो पुनरावर्तक मानों का उपयोग कर रहा है। इटरेटर के प्रत्येक मान के लिए हम आवश्यक मान ढूंढेंगे और उनकी तुलना करेंगे और अधिकतम inmaxVal वैरिएबल को स्टोर करेंगे। हम ऐसा तब तक करेंगे जब तक कि दोनों इटरेटर एक-दूसरे को पार नहीं कर लेते और अंत में मैक्सवेल वापस नहीं कर देते।

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

उदाहरण

#include<iostream>
using namespace std;
int calcMaxProdValue(int arr[], int n) {
   int maxVal = -100;
   int currentVal;
   int start = 0, end = n-1;
   while (start < end) {
      if (arr[start] < arr[end]) {
         currentVal = arr[start]*(end-start);
         start++;
      }
      else {
         currentVal = arr[end]*(end-start);
         end--;
      }
      maxVal = max(maxVal, currentVal);
   }
   return maxVal;
}
int main(){
   int arr[] = {5, 7, 3, 6, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The maximum value of abs(i – j) * min(arr[i], arr[j]) in an array is "<<calcMaxProdValue(arr,n);
   return 0;
}

आउटपुट

The maximum value of abs(i – j) * min(arr[i], arr[j]) in an array is 16
है
  1. सी++ में इंटीजर की सरणी में अधिकतम उत्पाद के साथ एक जोड़ी खोजें

    विचार करें कि हमारे पास एक सरणी A है, n विभिन्न तत्व हैं। हमें सरणी A से एक युग्म (x, y) ज्ञात करना है, ताकि x और y का गुणनफल अधिकतम हो। सरणी में सकारात्मक या नकारात्मक तत्व हो सकते हैं। मान लीजिए कि एक सरणी इस प्रकार है:ए =[-1, -4, -3, 0, 2, -5], तो जोड़ी (-4, -5) होगी क्योंकि उत्पाद अधिकतम है। इस

  1. सी++ में एक सरणी में अधिकतम जीसीडी के साथ जोड़ी खोजें

    मान लीजिए कि हमारे पास सकारात्मक पूर्णांकों की एक सरणी है। हमारा काम सरणी से पूर्णांकों की जोड़ी को खोजना है, जहां GCD मान अधिकतम है। मान लीजिए A ={1, 2, 3, 4, 5}, तो आउटपुट 2 है। जोड़ी (2, 4) में GCD 2 है, अन्य GCD मान 2 से कम हैं। इस समस्या को हल करने के लिए, हम प्रत्येक तत्व के भाजक की गिनती को

  1. किसी भी बीजीय व्यंजक का अधिकतम मान ज्ञात करने के लिए C++ प्रोग्राम

    यह किसी बीजीय व्यंजक का अधिकतम मान ज्ञात करने के लिए एक C++ प्रोग्राम है। (x1 + x2 + x3 +... + xa) * (y1 + y2 + ... + yb) और (a + b) का बीजीय व्यंजक ) पूर्णांक दिए गए हैं। एक संख्या और शेष बी संख्याओं के सभी संभावित संयोजनों पर विचार करें और उनके मूल्यों की गणना करें, जिससे अधिकतम मूल्य प्राप्त किया