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

सी++ में आसन्न तत्वों के अंतर का अधिकतम योग

इस समस्या में, हमें एक संख्या N दी जाती है। हमारा कार्य C++ में आसन्न तत्वों के अंतर का अधिकतम योग ज्ञात करने के लिए एक प्रोग्राम बनाना है।

समस्या का विवरण

हम सभी क्रमपरिवर्तन सरणियों के आसन्न तत्वों के बीच पूर्ण अंतर का अधिकतम योग पाएंगे।

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

इनपुट

N = 4

आउटपुट

7

स्पष्टीकरण

All permutations of size 4 are :
{1, 2, 3, 4} = 1 + 1 + 1 = 3
{1, 2, 4, 3} = 1 + 2 + 1 = 4
{1, 3, 2, 4} = 2 + 1 + 2 = 5
{1, 3, 4, 2} = 2 + 1 + 2 = 5
{1, 4, 2, 3} = 3 + 2 + 1 = 6
{1, 4, 3, 2} = 3 + 1 + 1 = 5
{2, 1, 3, 4} = 1 + 2 + 1 = 4
{2, 1, 4, 3} = 1 + 3 + 1 = 5
{2, 3, 1, 4} = 1 + 2 + 3 = 6
{2, 3, 4, 1} = 1 + 1 + 3 = 5
{2, 4, 1, 3} = 2 + 3 + 2 = 7
{2, 4, 3, 1} = 2 + 1 + 2 = 5
{3, 1, 2, 4} = 2 + 1 + 2 = 5
{3, 1, 4, 2} = 2 + 3 + 2 = 7
{3, 2, 1, 4} = 1 + 1 + 3 = 5
{3, 2, 4, 1} = 1 + 2 + 3 = 6
{3, 4, 1, 2} = 1 + 3 + 1 = 5
{3, 4, 2, 1} = 1 + 2 + 1 = 4
{4, 1, 2, 3} = 3 + 1 + 1 = 5
{4, 1, 3, 2} = 3 + 2 + 1 = 6
{4, 2, 1, 3} = 2 + 1 + 2 = 5
{4, 2, 3, 1} = 2 + 1 + 2 = 5
{4, 3, 1, 2} = 1 + 2 + 1 = 4
{4, 3, 2, 1} = 1 + 1 + 1 = 3

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

इस प्रकार की समस्या को हल करने के लिए, हमें क्रमचय का सामान्य योग ज्ञात करना होगा।

यहाँ, N के विभिन्न मानों के लिए आसन्न तत्वों के अंतर के अधिकतम योग के कुछ मान दिए गए हैं।

N = 2, maxSum = 1
N = 3, maxSum = 3
N = 4, maxSum = 7
N = 5, maxSum = 11
N = 6, maxSum = 17
N = 7, maxSum = 23
N = 8, maxSum = 31

यह योग N + N पदों के योग पर निर्भर जोड़ जैसा दिखता है

मैक्ससम =एस (एन) + एफ (एन) एस (एन) =एन (एन -1) / 2, और एफ (एन) एन का एक अज्ञात कार्य है

आइए S(N), maxSum(N) का उपयोग करके F(N) खोजें।

F(2) = 0
F(3) = 0
F(4) = 1
F(5) = 1
F(6) = 2
F(7) = 2
F(8) = 3

यहाँ से, हम प्राप्त कर सकते हैं कि F(N) Int(N/2 - 1) है। F(N) N के हर दूसरे मान के लिए बढ़ता है और शुरू में 2 और 3 के लिए यह शून्य है।

यह मैक्ससम का सूत्र बनाता है,

maxSum = N(N-1)/2 + N/2 - 1
maxSum = N(N-1)/2 + N/2 - 2/2
maxSum = ( N(N-1) + N - 2 )/2
maxSum = ( (N^2) - N + N - 2 )/2
maxSum = ((N^2) - 2 )/2

इस सूत्र का उपयोग करके, हम N के किसी भी दिए गए मान का अधिकतम योग मान ज्ञात कर सकते हैं।

उदाहरण

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

#include <iostream>
using namespace std;
int calcMaxSumofDiff(int N){
   int maxSum = 0;
   maxSum = ((N*N) - 2) /2 ;
   return maxSum;
}
int main(){
   int N = 13;
   cout<<"The maximum sum of difference of adjacent elements is "<<calcMaxSumofDiff(N);
   return 0;
}

आउटपुट

The maximum sum of difference of adjacent elements is 83

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

    इस समस्या में, हमें एक वृत्ताकार सरणी cirArr[] दी गई है। हमारा काम सर्कुलर सरणी में अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं। समस्या का विवरण वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लि

  1. सी++ में 3 गैर-अतिव्यापी उपसरणियों का अधिकतम योग

    मान लीजिए कि हमारे पास एक सरणी है जिसे धनात्मक पूर्णांकों की संख्या कहा जाता है, हमें अधिकतम योग के साथ तीन गैर-अतिव्यापी उपसरणियाँ ढूंढनी होंगी। यहां प्रत्येक सबअरे आकार k का होगा, और हम सभी 3*k प्रविष्टियों के योग को अधिकतम करना चाहते हैं। हमें प्रत्येक अंतराल की प्रारंभिक स्थिति का प्रतिनिधित्व

  1. K-Concatenation C++ में अधिकतम योग

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी गिरफ्तारी और एक पूर्णांक k है, हमें सरणी को k बार दोहराकर बदलना होगा। तो अगर arr =[1, 2] और k =3 तो संशोधित सरणी [1, 2, 1, 2, 1, 2] होगी। अब हमें संशोधित सरणी में अधिकतम उप-सरणी योग खोजना होगा। ध्यान दें कि उप-सरणी की लंबाई 0 हो सकती है और उस स्थिति में इसका