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

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

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

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

  • सरणी प्रारंभ करें।
  • अनुक्रमणिका को n + 1 आकार के साथ संग्रहीत करने के लिए एक सरणी प्रारंभ करें।
  • सरणी पर पुनरावृति करें और प्रत्येक तत्व की अनुक्रमणिका को स्थिति सरणी में संग्रहीत करें।
  • एक लूप लिखें जो n तक पुनरावृत्त हो और k 0 से बड़ा हो।
    • n - i तत्व की स्थिति को एक अस्थायी चर में संग्रहीत करें।
    • वर्तमान तत्व की स्थिति अपडेट करें [i] स्थिति के साथ [n - i]।
    • स्थिति स्थिति अपडेट करें[n - i] वर्तमान सूचकांक i के साथ।
    • वर्तमान तत्व arr[i] को arr[temp.Decrement 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. There can be two types of a palindrome, even length, and od

  1. सरणी में सबसे बड़ा d इस प्रकार ज्ञात कीजिए कि a + b + c =d C++ . में

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