इस समस्या में, हमें दो पूर्णांक मान n और k दिए गए हैं। हमारा कार्य अधिकतम K स्वैप करके अधिकतम संभव संख्या खोजना है।
समस्या विवरण: यहां, हमें वह संख्या ज्ञात करनी है जो अधिकतम है और संख्या के अधिकतम k अंकों को स्वैप करने के बाद बनती है।
एक उदाहरण लेकर समस्या को समझते हैं,
इनपुट: n = 538 k = 1
आउटपुट: 835
व्याख्या:
हम 8 और 5 को स्वैप करेंगे।
समाधान दृष्टिकोण
समस्या को हल करने के लिए, हमें संख्या के अंकों को k बार स्वैप करना होगा और जांचना होगा कि संख्या अधिकतम बनी है या नहीं।
हमें संख्या का अधिकतम अंक खोजना होगा और फिर उसे पहले इंडेक्स पर स्वैप करना होगा। और इसी तरह संख्या के पहले k इंडेक्स के लिए।
हमारे समाधान के कार्य को दर्शाने वाला प्रोग्राम
उदाहरण
#include <bits/stdc++.h> using namespace std; void calcMaxNumAfterSwap(string number, int k, string& maxString, int n){ if (k == 0) return; for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { if (number[i] < number[j]) { swap(number[i], number[j]); if (number.compare(maxString) > 0) maxString = number; calcMaxNumAfterSwap(number, k - 1, maxString, n); swap(number[i], number[j]); } } } } int main(){ string str = "15263"; int k = 3; int size = str.length(); string maxString = str; calcMaxNumAfterSwap(str, k, maxString, size); cout<<"The maximum number created after "<<k<<" swaps is "<<maxString; return 0; }आउटपुट
The maximum number created after 3 swaps is 65321