এই সমস্যায়, আমাদের একটি নম্বর দেওয়া হয়েছে 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