इस समस्या में, हमें एक संख्या n दी गई है। हमारा काम n से छोटी सबसे बड़ी संख्या को इस तरह प्रिंट करना है कि उसके सभी अंक अलग-अलग हों।
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं
Input: n = 2332 Output: 2319
इस समस्या को हल करने के लिए, हम संख्याओं की गिनती को n से 0 तक उलट देते हैं। और अलग-अलग अंकों के साथ संख्या की जांच करते हैं, यदि वर्तमान गणना मान शर्त को पूरा करते हैं तो इसे प्रिंट करें और लूप को समाप्त करें। अन्यथा लूप जारी रखें। लूप के चलने की अधिकतम संख्या हमेशा n से कम होती है।
उदाहरण
हमारे समाधानों को लागू करने का कार्यक्रम,
#include <bits/stdc++.h> using namespace std; int findDistinctDigitNumber(int n) { for (int i = n - 1; i>=0 ; i--) { int count[10] = { 0 }; int x = i; int count1 = 0, count2 = 0; while (x) { count[x % 10]++; x /= 10; count1++; } for (int j = 0; j < 10; j++) { if (count[j] == 1) count2++; } if (count1 == count2) return i; } } int main() { int n = 44324; cout<<"Number less than "<<n<<" with all digits distinct are : "<<findDistinctDigitNumber(n); return 0; }
आउटपुट
Number less than 44324 with all digits distinct are : 43987