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

C++ में arr[i]*i के योग को अधिकतम करना


समस्या कथन

N पूर्णांकों का एक ऐरे दिया गया है। आपको ऐरे के तत्वों को पुनर्व्यवस्थित करने की अनुमति है। कार्य Σarr[i]*i का अधिकतम मान ढूंढना है, जहां i = 0, 1, 2, .. n-1।

यदि इनपुट ऐरे = {4, 1, 6, 2} तो अधिकतम योग 28 होगा यदि हम तत्वों को सॉर्टेड क्रम में पुनर्व्यवस्थित करें:

{1, 2, 4, 6} = (1 * 0) + (2 * 1) + (4 * 2) + (6 * 3) = 28

एल्गोरिदम

1. ऐरे को आरोही क्रम में सॉर्ट करें।
2. ऐरे पर पुनरावृति करें और प्रत्येक ऐरे तत्व को i से गुणा करें जहां i = 0, 1, 2, n-1।
3. योग वापस करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int getMaxSum(int* arr, int n) {
    sort(arr, arr + n);
    int sum = 0;
    for (int i = 0; i < n; ++i) {
        sum = sum + arr[i] * i;
    }
    return sum;
}

int main() {
    int arr[] = {4, 1, 6, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Maximum sum = " << getMaxSum(arr, n) << endl;
    return 0;
}

आउटपुट

Maximum sum = 28
  1. C++ में भूलभुलैया समस्या का समाधान C++ में भूलभुलैया समस्या का समाधान

    समस्या विवरण मान लीजिए एक गेंद एक भूलभुलैया में है जिसमें खाली स्थान और दीवारें हैं। गेंद किसी भी दिशा में (ऊपर, नीचे, बाएं, दाएं) लुढ़ककर खाली रास्तों से गुजर सकती है, लेकिन यह तब तक नहीं रुकेगी जब तक यह दीवार से न टकरा जाए। जब गेंद रुकती है, तो यह अगली दिशा चुन सकती है। हमें गेंद की प्रारंभिक स्

  1. C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग

    इस समस्या में, हमें एक सर्कुलर लिंक्ड सूची दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो सर्कुलर लिंक्ड सूची के नोड्स का योग ढूंढे। हमें बस लिंक्ड सूची के सभी नोड मानों को जोड़ना है। कुछ महत्वपूर्ण परिभाषाएं लिंक्ड सूची डेटा संरचनाओं का एक क्रम है, जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं।

  1. - C++ में ऐरे के बिटवाइज OR को अधिकतम करना

    समस्या कथन N पूर्णांकों का एक ऐरे दिया गया है। ऐरे के सभी तत्वों के बिटवाइज OR को एक कार्य करके अधिकतम करना है। कार्य ऐरे के किसी भी तत्व को अधिकतम k बार दिए गए पूर्णांक x से गुणा करना है। यदि इनपुट ऐरे है {4, 3, 6, 1}, k = 2 और x = 3 तो प्राप्त किया जा सकने वाला अधिकतम मान 55 है। एल्गोरिदम 1. एक