এই সমস্যায়, আমাদের একটি উপাদান N দেওয়া হয়েছে। আমাদের একই সংখ্যার সেট সহ পরবর্তী বৃহত্তর সংখ্যাটি খুঁজে বের করতে হবে। আমাদের একই অঙ্কের ক্ষুদ্রতম সংখ্যাটি খুঁজে বের করতে হবে যা N এর চেয়ে বড়।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
N = "92534"
আউটপুট
92543
সমাধান পদ্ধতি
পরবর্তী বৃহত্তর উপাদানটি খুঁজে পেতে সমস্যার একটি সহজ সমাধান হল নিম্নলিখিত পদ্ধতি -
-
সংখ্যাটিকে সর্বনিম্ন উল্লেখযোগ্য বিট থেকে সর্বাধিক উল্লেখযোগ্য বিটে অতিক্রম করুন৷ এবং যখন বর্তমান উপাদানটি শেষ উপাদানের চেয়ে ছোট হয় তখন থামুন৷
-
এই পরে অবশিষ্ট অ্যারের ক্ষুদ্রতম উপাদান জন্য অনুসন্ধান. এবং সবচেয়ে ছোট সংখ্যাটি খুঁজুন এবং সংখ্যার সাথে এটি অদলবদল করুন।
-
তারপর অবশিষ্ট সাবয়ারে সাজান এবং আউটপুট ফেরত দিন।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <iostream> #include <cstring> #include <algorithm> using namespace std; void findNextGreater(char number[], int n) { int i, j; for (i = n-1; i > 0; i--) if (number[i] > number[i-1]) break; if (i==0) { cout<<"Next number is not possible"; return; } int x = number[i-1], smallest = i; for (j = i+1; j < n; j++) if (number[j] > x && number[j] < number[smallest]) smallest = j; char temp = number[smallest]; number[smallest] = number[i-1]; number[i-1] = temp; sort(number + i, number + n); cout<<number; return; } int main(){ char number[] = "92534"; int n = strlen(number); cout<<"The next number with same set of digits is "; findNextGreater(number, n); return 0; }
আউটপুট
The next number with same set of digits is 92543