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

C++ में आवृत्ति प्रतिबंध के साथ सरणी से अधिकतम गुणनफल


सरणी और पूर्णांक k दिया गया है। सरणी से तत्व चुनकर अधिकतम गुणनफल प्राप्त करें ताकि दोहराए जाने वाले तत्वों की आवृत्ति का योग 2*k से अधिक न हो।

रणनीति: सरणी को सॉर्ट करें। पहले प्रत्येक अद्वितीय तत्व को एक बार लें। फिर शेष k का उपयोग करके सबसे बड़े तत्वों की अतिरिक्त प्रतियां गुणा करें।

उदाहरण: {5, 6, 7, 8, 2, 5, 6, 8}, k=2 → अधिकतम गुणनफल 161280।

C++ कार्यान्वयन

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

#define ll long long int

ll maxProd(int arr[], int n, int k) {
    ll product = 1;
    unordered_map s;
    sort(arr, arr + n);
    for (int i = 0; i < n; i++) {
        if (s[arr[i]] == 0) product *= arr[i];
        s[arr[i]]++;
    }
    for (int j = n - 1; j >= 0 && k > 0; j--) {
        if (k > (s[arr[j]] - 1) && (s[arr[j]] - 1) > 0) {
            product *= pow(arr[j], s[arr[j]] - 1);
            k -= s[arr[j]] - 1;
            s[arr[j]] = 0;
        } else if (k <= (s[arr[j]] - 1) && (s[arr[j]] - 1) > 0) {
            product *= pow(arr[j], k);
            break;
        }
    }
    return product;
}

int main() {
    int arr[] = {5, 6, 7, 8, 2, 5, 6, 8};
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 2;
    cout << maxProd(arr, n, k);
    return 0;
}

आउटपुट

161280
  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

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

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिसके बाएं और दाएं उपसरणी का योग समान हो

    मान लीजिए हमारे पास एक सरणी A है, जिसमें n तत्व हैं। हमारा कार्य सरणी A को दो उपसरणी में विभाजित करना है, ताकि प्रत्येक उपसरणी का योग समान हो। मान लीजिए सरणी A = [2, 3, 4, 1, 4, 5], आउटपुट 1 है, इसलिए 1 से पहले और बाद की उपसरणी ली जाती हैं: [2, 3, 4], और [4, 5]। इस समस्या को हल करने के लिए, हम पहले

  1. - C++ का उपयोग करके सरणी में ऐसा तत्व खोजें जिससे सभी तत्व विभाज्य हों

    मान लीजिए हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमें A से एक ऐसा तत्व ढूंढना है जिससे सभी तत्व इससे विभाज्य हों। मान लीजिए A = [15, 21, 69, 33, 3, 72, 81] है, तो तत्व 3 होगा, क्योंकि सभी संख्याएं 3 से विभाज्य हैं। इस समस्या को हल करने के लिए, हम A में सबसे छोटी संख्या लेंगे, फिर जांचेंगे कि क्य