इस ट्यूटोरियल में, हम एक प्रोग्राम लिखने जा रहे हैं जो अधिकतम 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
निष्कर्ष
यदि ट्यूटोरियल में आपके कोई प्रश्न हैं, तो उनका टिप्पणी अनुभाग में उल्लेख करें।