इस समस्या में, हमें एक बड़ी संख्या N दी जाती है। हमारा कार्य किसी दी गई संख्या का सबसे छोटा क्रमचय ज्ञात करना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
N = 4529016
आउटपुट
1024569
समाधान दृष्टिकोण
समस्या का एक सरल समाधान लंबे पूर्णांक मान को एस्ट्रिंग में संग्रहीत करना है। फिर हम उस स्ट्रिंग को सॉर्ट करेंगे जो हमारा परिणाम है। लेकिन अगर कोई अग्रणी शून्य हैं, तो हम उन्हें पहले गैर शून्य मान के बाद स्थानांतरित कर देंगे।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <bits/stdc++.h> using namespace std; string smallestNumPer(string s) { int len = s.length(); sort(s.begin(), s.end()); int i = 0; while (s[i] == '0') i++; swap(s[0], s[i]); return s; } int main() { string s = "4529016"; cout<<"The number is "<<s<<endl; cout<<"The smallest permutation of the number is "<<smallestNumPer(s); return 0; }
आउटपुट
The number is 4529016 The smallest permutation of the number is 1024569