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