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