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

का अधिकतम मूल्य |arr[i] - arr[j] - + |i - j| सी++ में

इस समस्या में, हमें n पूर्णांकों की एक सरणी दी गई है। हमारा काम एक प्रोग्राम बनाना है जो कि |arr[i]-arr[j]| . का अधिकतम मान प्राप्त करेगा + |i-j|.

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट - सरणी ={4, 1, 2}

आउटपुट -4

स्पष्टीकरण -

|arr[0] - arr[1]|+|0-1| = |4-1| + |-1| = 3+1 = 4
|arr[0] - arr[2]|+|0-2| = |4-2| + |-2| = 2+2 = 4
|arr[1] - arr[2 ]|+|1-2| = |1-2| + |1-2| = 1+1 = 2

इस समस्या को हल करने के लिए, एक आसान तरीका क्रूर बल . का उपयोग करना होगा दृष्टिकोण जो दो लूप का उपयोग करेगा और अधिकतम अंतर ढूंढेगा।

लेकिन एक कुशल दृष्टिकोण पूर्ण कार्य के गुणों का उपयोग करना होगा,

आइए समीकरण को डिकोड करें और हल खोजें,

arr[i] - arr[j] + i - j = (arr[i] + i) - (arr[j] + j)
arr[i] - arr[j] - i + j = (arr[i] - i) - (arr[j] - j)
-arr[i] + arr[j] + i - j = -{(arr[i]-i) -(arr[j]-j)}
-arr[i] + arr[j] - i + j = -{(arr[i]+i) - (arr[j]+j)}

पहले और आगे समान हैं और दूसरे और चौथे समान हैं। इसका उपयोग करके हम दो सरणियाँ बनाएंगे जो arr[i]+- i.

values ​​के मानों को संग्रहित करेंगे

array1 arr[i] + i

values ​​के मानों को संग्रहित करेगा

array2 मूल्यों को संग्रहीत करेगा arr[i] - i

तो, हम अधिकतम दो मान पाएंगे जो कि हैं

अधिकतम ((अधिकतम(सरणी1)-मिनट(सरणी1)), (अधिकतम(सरणी2)-मिनट(सरणी2)))

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

#include<iostream>
using namespace std;
int maxDiff(int arr[], int n) {
   int ans = 0;
   for (int i = 0; i < n; i++)
      for (int j = 0; j < n; j++)
         ans = max(ans, abs(arr[i] - arr[j]) + abs(i - j));
   return ans;
}
int main() {
   int array[] = { 5, 7, 1, 2 };
   int n = sizeof(array) / sizeof(array[0]);
   cout<<"The maximum value of |arr[i] - arr[j]| + |i-j| is "<<maxDiff(array, n);
   return 0;
}

आउटपुट

The maximum value of |arr[i] - arr[j]| + |i-j| is 7
. है
  1. फैब्स () सी ++ में

    सी या सी ++ लाइब्रेरी फ़ंक्शन डबल फैब्स (डबल एक्स) एक्स का पूर्ण मान देता है। x− यह फ्लोटिंग पॉइंट वैल्यू है। यह फ़ंक्शन x का निरपेक्ष मान लौटाता है। निम्नलिखित fabs() फ़ंक्शन के लिए घोषणा है। double fabs(double x) निम्न उदाहरण fabs() फ़ंक्शन के उपयोग को दर्शाता है। उदाहरण #include <iostream>

  1. Expm1 () सी ++ में

    फ़ंक्शन expm1() का उपयोग किसी भी संख्या घटाकर एक की घात तक बढ़ाए गए घातांक की गणना के लिए किया जाता है। यह (ए की घात में बढ़ाए गए घातांक) का मान लौटाता है - 1. यहाँ Expm1(), . का गणितीय व्यंजक है expm1(a) = (e^a) - 1 यहाँ C++ भाषा में expm1() का सिंटैक्स दिया गया है, float expm1(variable_name); य

  1. log1p () सी++ में

    फ़ंक्शन log1p() का उपयोग (a+1) के प्राकृतिक लघुगणक (आधार ई लघुगणक) की गणना के लिए किया जाता है, जहां a कोई भी संख्या है। यह (a+1) के प्राकृतिक लघुगणक का मान लौटाता है। जब हम -1 से कम मान पास करते हैं तो यह एक संख्या नहीं (नैन) देता है। यहाँ log1p(), . का गणितीय व्यंजक है log1p(a) = base-e log(a+1)