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

C++ में निरपेक्ष मान अभिव्यक्ति का अधिकतम


मान लीजिए हमारे पास समान लंबाई के दो पूर्णांक सरणी हैं, हमें इसका अधिकतम मान ढूंढना है: |arr1[i] - arr1[j]| + |arr2[i] - arr2[j]| + |i - j|। जहां अधिकतम मान सभी 0 <= i, j < arr1.length पर लिया जाता है। इसलिए अगर दी गई दो सरणी [1,2,3,4] और [-1,4,5,6] हैं, तो आउटपुट 13 होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:

  • getVal नामक एक मेथड परिभाषित करें, जो सरणी v लेगा

  • maxVal := -inf, minVal := inf

  • i को 0 से v के आकार तक रेंज में लिए:

    • minVal := v[i] और minVal का न्यूनतम

    • maxVal := v[i] और maxVal का अधिकतम

  • maxVal - minVal लौटाएं

  • मुख्य मेथड से, निम्नलिखित करें:

  • आकार 4 की एक सरणी ret बनाएं

  • n := arr1 का आकार

  • i को 0 से n - 1 तक रेंज में लिए:

    • arr1[i] - arr2[i] + i को ret[0] में डालें

    • arr1[i] + arr2[i] + i को ret[1] में डालें

    • arr1[i] - arr2[i] - i को ret[2] में डालें

    • arr1[i] + arr2[i] - i को ret[3] में डालें

  • ans := -inf

  • i को 0 से 3 तक रेंज में लिए:

    • ans := ans और getVal(ret[i]) का अधिकतम

  • ans लौटाएं

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

उदाहरण

#include <bits/stdc++.h> using namespace std; class Solution {    public:    int getVal(vector <int>& v){       int maxVal = INT_MIN;       int minVal = INT_MAX;       for(int i = 0; i < v.size(); i++){          minVal = min(v[i], minVal);          maxVal = max(v[i], maxVal);       }       return maxVal - minVal;    }    int maxAbsValExpr(vector<int>& arr1, vector<int>& arr2) {       vector <int> ret[4];       int n = arr1.size();       for(int i = 0; i < n; i++){          ret[0].push_back(arr1[i] - arr2[i] + i);          ret[1].push_back(arr1[i] + arr2[i] + i);          ret[2].push_back(arr1[i] - arr2[i] - i);          ret[3].push_back(arr1[i] + arr2[i] - i);       }       int ans = INT_MIN;       for(int i = 0; i < 4; i++){          ans = max(ans, getVal(ret[i]));       }       return ans;    } }; main(){    vector<int> v1 = {1,2,3,4}, v2 = {-1, 4, 5, 6};    Solution ob;    cout << (ob.maxAbsValExpr(v1, v2)); }

इनपुट

[1,2,3,4] [-1,4,5,6]

आउटपुट

13

  1. - C++ में दिए गए एक्सप्रेशन का मान अधिकतम करना

    समस्या कथन तीन गैर-शून्य पूर्णांक a, b और c दिए गए हैं। कार्य उनके बीच किसी भी क्रम में जोड़ और गुणा के चिन्ह लगाकर अधिकतम संभव मान ढूंढना है। कृपया ध्यान दें कि पूर्णांकों का पुनर्व्यवस्थित करना अनुमत है लेकिन जोड़ और गुणा चिन्ह का उपयोग एक बार किया जाना चाहिए। यदि a = 1, b = 3 और c = 5 तो अधिकत

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

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

  1. - C++ में लैम्ब्डा एक्सप्रेशन

    C++ STL में उपयोगी जेनेरिक फ़ंक्शन्स जैसे std::for_each शामिल हैं। दुर्भाग्य से उनका उपयोग करना काफी बोझिल हो सकता है, विशेष रूप से यदि आप जिस फंक्टर को लागू करना चाहते हैं वह विशेष फ़ंक्शन के लिए यूनिक है। इसलिए वह फ़ंक्शन जिसे आप बनाएंगे वह उस नेमस्पेस में केवल उस एक स्थान पर उपयोग होने के लिए होग