इस समस्या में, हमें एक धनात्मक पूर्णांक दिया जाता है। हमारा काम अधिकतम एक स्वैप ऑपरेशन का उपयोग करके सबसे बड़ी संख्या बनाने के लिए एक प्रोग्राम बनाना है।
हम मौजूदा संख्या के अंकों का उपयोग करके एक नया नंबर बनाएंगे।
बनाई गई सबसे बड़ी संख्या में मौजूदा संख्या से केवल एक अंक की अदला-बदली हो सकती है।
समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: n = 63512 Output: 65312
समाधान दृष्टिकोण
समस्या को हल करने की एक विधि दी गई संख्या के अंकों की जोड़ी को स्वैप करके बनाई गई सभी संख्याओं को ढूंढकर है। इन सभी अदला-बदली अंकों में से, सबसे बड़ी संख्या लौटा दी जाती है। इसके लिए हम नंबर को स्ट्रिंग और स्वैप पोजीशन में बदल देंगे।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <iostream> using namespace std; int findLargestNumSwapDig(int N){ string strNum = to_string(N); string temp = strNum; for (int i = 0; i < strNum.size(); i++) { for (int j = i + 1; j < strNum.size(); j++) { swap(strNum[i], strNum[j]); if (stoi(strNum) > stoi(temp)) temp = strNum; swap(strNum[i], strNum[j]); } } return stoi(temp); } int main(){ int num = 792156; cout<<"The number is "<<num<<endl; cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl; return 0; }
आउटपुट
The number is 792156 The largest number created by swapping one digit is972156
एक और तरीका
समस्या को हल करने के लिए एक और तरीका स्वैप ढूंढना है जो सबसे बड़ी संभव संख्या में योगदान देता है। इसके लिए हम बाएं से दाएं नंबर को स्कैन करेंगे। और फिर पहले जोड़े के रूप में स्वैप करें जो अगला अंक पिछले अंक से बड़ा है। इस स्वैप के परिणामस्वरूप सबसे बड़ी संख्या होगी।
उदाहरण
हमारे समाधान की कार्यप्रणाली को दर्शाने के लिए कार्यक्रम
#include <iostream> using namespace std; int findLargestNumSwapDig(int N){ int currMaxDig = -1; int currMaxInd = -1; int lSwap = -1; int rSwap = -1; string strNum = to_string(N); for (int i = strNum.size() - 1; i >= 0; i--) { if (strNum[i] > currMaxDig) { currMaxDig = strNum[i]; currMaxInd = i; continue; } if (strNum[i] < currMaxDig) { lSwap = i; rSwap = currMaxInd; } } if (lSwap == -1) return N; swap(strNum[lSwap], strNum[rSwap]); return stoi(strNum); } int main(){ int num = 792156; cout<<"The number is "<<num<<endl; cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl; return 0; }
आउटपुट
The number is 792156 The largest number created by swapping one digit is972156