এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি একটি একক অদলবদল সহ সবচেয়ে বড় সংখ্যা খুঁজে বের করে যা প্রদত্ত সংখ্যা n-এর চেয়ে কম।
আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷
৷- সংখ্যা n শুরু করুন।
- স্ট্রিংয়ের শেষ থেকে পুনরাবৃত্তি করুন এবং ডিজিটের সূচকটি খুঁজে বের করুন যা তার পরবর্তী সংখ্যার চেয়ে বড়। এটি একটি ভেরিয়েবলে সংরক্ষণ করুন।
- আপনি এটি খুঁজে পাওয়ার সাথে সাথে লুপটি ভেঙে দিন।
- স্ট্রিং এর শেষ থেকে উপরের সূচীতে সংখ্যার উপর পুনরাবৃত্তি করুন।
- ডিজিটের সূচী খুঁজুন যা উপরের সূচীকৃত সংখ্যা থেকে কম এবং এলাকার সকলের মধ্যে বড়।
-
উপরের দুটি সূচীতে অঙ্কগুলি অদলবদল করুন৷ আপডেট করা নম্বরটি ফেরত দিন৷
৷
উদাহরণ
আসুন কোডটি দেখি।
#include <bits/stdc++.h>
using namespace std;
string getTheNumber(string str) {
int length = str.length();
int index = -1;
for (int i = length - 2; i >= 0; i--) {
if (str[i] > str[i+1]) {
index = i;
break;
}
}
int smallerDigitIndex = -1;
for (int i = length - 1; i > index; i--) {
if (str[i] < str[index]) {
if (smallerDigitIndex == -1 || str[i] >= str[smallerDigitIndex]) {
smallerDigitIndex = i;
}
}
}
if (index == -1) {
return "-1";
}
if (smallerDigitIndex != -1) {
swap(str[index], str[smallerDigitIndex]);
return str;
}
return "-1";
}
int main() {
string str = "54624";
cout << getTheNumber(str) << endl;
return 0;
} আউটপুট
আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।
54426
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।