इस समस्या में, हमें [1,n] श्रेणी के n पूर्णांकों की एक सरणी दी गई है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो |arr[0] - arr[1] - + |arr[1] - arr[2] - + … +|arr[n - 2] - arr[ का अधिकतम मान प्राप्त करेगा। n - 1]।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - सरणी ={1, 2, 3}
आउटपुट -3
स्पष्टीकरण -
max sum is |1-3|+|2-1| = 3
इस समस्या को हल करने के लिए, सरणी से सभी क्रमपरिवर्तन बनाना एक आसान तरीका है। और क्रमचय से सभी मानों का अधिकतम मान ज्ञात कीजिए। एक अधिक प्रभावी तरीका यह है कि n के प्रत्येक मान के लिए सभी अधिकतम मानों का सामान्यीकरण किया जाए और फिर एक सामान्य सूत्र बनाया जाए।
तो,
Maximum sum for (n = 1) = 0 Maximum sum for (n = 2) = 1 Maximum sum for (n = 3) = 3 Maximum sum for (n = 4) = 7 Maximum sum for (n = 5) = 11 So, the maximum value is 0, 1, 3, 7, 11…. है
सामान्य सूत्र है, ((n*n/2)-1)
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम,
#include <iostream> using namespace std; int maxAbsVal(int n) { if (n == 1) return 0; return ((n*n/2) - 1); } int main() { int n = 4; cout<<"The maximum sum of absolute difference is "<<maxAbsVal(n); return 0; }
आउटपुट
The maximum sum of absolute difference is 7