কম্পিউটার

C++ এ শুধুমাত্র একটি সোয়াপ অপারেশন ব্যবহার করে সবচেয়ে ছোট সংখ্যা সম্ভব


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি একটি একক অদলবদল সহ সবচেয়ে বড় সংখ্যা খুঁজে বের করে যা প্রদত্ত সংখ্যা 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

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. সর্বাধিক একটি সোয়াপ অপারেশন C++ ব্যবহার করে বৃহত্তম সংখ্যা তৈরি করুন

  2. C++ ব্যবহার করে একটি গ্রিডে এক পয়েন্ট থেকে অন্য পয়েন্টে যাওয়ার উপায়ের সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে অন্যটিতে উপস্থিত একটি স্ট্রিংয়ের সাবস্ট্রিংয়ের সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে প্রদত্ত বিন্দু থেকে সম্ভাব্য চতুর্ভুজের সংখ্যা নির্ণয় করুন