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

C++ में अधिकतम k स्वैप के बाद सबसे बड़ा क्रमपरिवर्तन


इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो अधिकतम k स्वैप के बाद सबसे बड़ा क्रमपरिवर्तन ढूंढता है।

आइए समस्या को हल करने के चरण देखते हैं।

  • सरणी आरंभ करें।
  • आकार n + 1 की एक सरणी आरंभ करें ताकि इंडेक्स स्टोर किया जा सके।
  • सरणी पर पुनरावृति करें और प्रत्येक तत्व के इंडेक्स को पोजीशन सरणी में स्टोर करें।
  • एक लूप लिखें जो n तक पुनरावृति करता है और k 0 से बड़ा है।
    • n - i तत्व की स्थिति को एक अस्थायी वेरिएबल में स्टोर करें।
    • वर्तमान तत्व arr[i] की स्थिति को position[n - i] से अपडेट करें।
    • position[n - i] को वर्तमान इंडेक्स i से अपडेट करें।
    • वर्तमान तत्व arr[i] को arr[temp] से स्वैप करें। k घटाएं।
  • सरणी तत्व प्रिंट करें।

उदाहरण

आइए कोड देखते हैं।

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

void getLargestPermutation(int arr[], int n, int k) { 
    int position[n + 1]; 
    for (int i = 0; i < n; ++i) { 
        position[arr[i]] = i; 
    } 
    for (int i = 0; i < n && k; ++i) { 
        if (arr[i] == n - i) { 
            continue; 
        } 
        int temp = position[n - i]; 
        position[arr[i]] = position[n - i]; 
        position[n - i] = i; 
        swap(arr[temp], arr[i]); 
        --k; 
    } 
} 

int main() { 
    int arr[] = { 5, 3, 2, 6, 7, 1, 4 }; 
    int n = 7, k = 3; 
    getLargestPermutation(arr, n, k); 
    for (int i = 0; i < n; ++i) { 
        cout << arr[i]; 
    } 
    cout << endl; 
    return 0; 
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।

7653214

निष्कर्ष

यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उन्हें टिप्पणी अनुभाग में उल्लेख करें।


  1. - C++ में K नेगेशन के बाद ऐरे योग को अधिकतम करना

    समस्या कथन आकार n का एक ऐरे और एक संख्या k दी गई है। हमें ऐरे को k बार संशोधित करना है। ऐरे संशोधित करने का मतलब है प्रत्येक ऑपरेशन में हम किसी भी ऐरे तत्व arr[i] को उसके नकारात्मक से बदल सकते हैं यानी arr[i] = -arr[i]। कार्य इस ऑपरेशन को इस तरह करना है कि k ऑपरेशन के बाद ऐरे का योग अधिकतम हो। यद

  1. - C++ में पेलिंड्रोम परम्यूटेशन बनाने के लिए न्यूनतम निष्कासन

    समस्या कथनएक स्ट्रिंग S दी गई है, हमें न्यूनतम वर्ण खोजने हैं जिन्हें हम हटा सकते हैं ताकि स्ट्रिंग S का कोई भी परम्यूटेशन पेलिंड्रोम बन जाएउदाहरणयदि str = abcdba तो हम 1 वर्ण हटाते हैं यानी या तो c या d।एल्गोरिदम1. पेलिंड्रोम दो प्रकार के हो सकते हैं, सम लंबाई, और विषम लंबाई पेलिंड्रोम 2. हम इस तथ्

  1. - C++ में ऐरे में सबसे बड़ा d ढूंढें जैसे कि a + b + c = d

    मान लीजिए हमारे पास पूर्णांकों का एक सेट है। हमें एक संख्या d ढूंढनी है, जहां d = a + b + c, और हमें (a + b + c) को अधिकतम करना है, सभी a, b, c, और d सेट में मौजूद हैं। सेट में कम से कम एक एलिमेंट होगा, और अधिकतम 1000 एलिमेंट्स। प्रत्येक एलिमेंट एक परिमित संख्या होगी। यदि सेट {2, 3, 5, 7, 12} है, त