কম্পিউটার

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


এই সমস্যায়, আমরা একটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়. আমাদের কাজ হল সর্বাধিক একটি সোয়াপ অপারেশন ব্যবহার করে সবচেয়ে বড় সংখ্যা গঠনের জন্য একটি প্রোগ্রাম তৈরি করা।

আমরা বিদ্যমান সংখ্যার সংখ্যা ব্যবহার করে একটি নতুন নম্বর তৈরি করব।

গঠিত বৃহত্তম সংখ্যাটি বিদ্যমান সংখ্যা থেকে শুধুমাত্র একটি সংখ্যা অদলবদল করতে পারে।

সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক

Input: n = 63512
Output: 65312

সমাধান পদ্ধতি

সমস্যা সমাধানের একটি পদ্ধতি হল প্রদত্ত সংখ্যার সংখ্যার জোড়া অদলবদল করে তৈরি করা সমস্ত সংখ্যা খুঁজে বের করা। এই সমস্ত অদলবদল করা সংখ্যার মধ্যে, বৃহত্তমটি ফেরত দেওয়া হয়। এর জন্য, আমরা সংখ্যাটিকে স্ট্রিং এবং সোয়াপ পজিশনে রূপান্তর করব।

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <iostream>
using namespace std;

int findLargestNumSwapDig(int N){

   string strNum = to_string(N);
   string temp = strNum;
   for (int i = 0; i < strNum.size(); i++) {
      for (int j = i + 1; j < strNum.size(); j++) {
         swap(strNum[i], strNum[j]);
         if (stoi(strNum) > stoi(temp))
            temp = strNum;
         swap(strNum[i], strNum[j]);
      }
   }
   return stoi(temp);
}
int main(){
   int num = 792156;
   cout<<"The number is "<<num<<endl;
   cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl;
   return 0;
}

আউটপুট

The number is 792156
The largest number created by swapping one digit is972156

অন্য পদ্ধতি

সমস্যা সমাধানের আরও একটি পদ্ধতি হল অদলবদল খুঁজে বের করা যা সম্ভাব্য বৃহত্তম সংখ্যায় অবদান রাখে। এর জন্য, আমরা বাম থেকে ডানে নম্বরটি স্ক্যান করব। এবং তারপর প্রথম জোড়া ফর্ম অদলবদল করুন যা পরবর্তী সংখ্যাটি আগের সংখ্যার চেয়ে বড়। এই অদলবদল সবচেয়ে বড় সংখ্যায় পরিণত হবে৷

উদাহরণ

আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম

#include <iostream>
using namespace std;

int findLargestNumSwapDig(int N){

   int currMaxDig = -1;
   int currMaxInd = -1;
   int lSwap = -1;
   int rSwap = -1;

   string strNum = to_string(N);
   for (int i = strNum.size() - 1; i >= 0; i--) {

      if (strNum[i] > currMaxDig) {
         currMaxDig = strNum[i];
         currMaxInd = i;
         continue;
      }
      if (strNum[i] < currMaxDig) {
         lSwap = i;
         rSwap = currMaxInd;
      }
   }
   if (lSwap == -1)
      return N;
   swap(strNum[lSwap], strNum[rSwap]);
   return stoi(strNum);
}
int main(){
   int num = 792156;
   cout<<"The number is "<<num<<endl;
   cout<<"The largest number created by swapping one digit is "<<findLargestNumSwapDig(num) << endl;
   return 0;
}

আউটপুট

The number is 792156
The largest number created by swapping one digit is972156

  1. C++ ব্যবহার করে পঞ্চভুজ পিরামিডাল নম্বর খুঁজুন

  2. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে k^m, m>=0 ফর্মের সমষ্টি সহ সাবয়ারের সংখ্যা খুঁজুন

  4. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন