কম্পিউটার

C++ এ সংখ্যার একই সেট সহ N-এর চেয়ে ছোট সংখ্যাটি খুঁজুন


এই সমস্যায়, আমাদের একটি স্ট্রিং N দেওয়া হয়েছে যা একটি সংখ্যাকে প্রতিনিধিত্ব করে। আমাদের কাজ হল ডিজিটের একই সেট সহ N-এর চেয়ে ছোট সংখ্যাটি খুঁজে বের করা।

সমস্যা বর্ণনা: প্রদত্ত সংখ্যার সমস্ত সংখ্যা ব্যবহার করে আমাদের একটি সংখ্যা খুঁজে বের করতে হবে যা N-এর চেয়ে সবচেয়ে ছোট সংখ্যা।

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

ইনপুট: N =“54314”

আউটপুট: 54341

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

সমস্যার একটি সহজ সমাধান হল সংখ্যাটির সংখ্যা খুঁজে বের করা যা সবচেয়ে বড় ছোট সংখ্যাটি খুঁজে পেতে স্থানান্তরিত হতে পারে। এখন, উদ্দেশ্য সমাধানের জন্য সংখ্যাটি সঠিক সাফল্যের চেয়ে বেশি হওয়া উচিত।

এর জন্য আমরা ডান থেকে বামে সংখ্যা ফর্মটি অতিক্রম করব এবং শেষ উপাদানগুলির থেকে বড় উপাদানটি খুঁজে পাব৷

তারপর ডান সাব্যারেতে সর্বশ্রেষ্ঠ উপাদানটি খুঁজুন এবং বর্তমান উপাদান দিয়ে এটি প্রতিস্থাপন করুন। সাজানোর পর সাবারে একটি অবরোহী ক্রম। এটি আপনার সবচেয়ে বড় ছোট উপাদান হবে।

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

void calcGreatestSmallerElement(string N, int size) {
   
   int i, j;
   for (i = size - 1; i > 0; i--)
      if (N[i] < N[i - 1])
         break;

   if (i == 0) {
      cout << "Previous number is not possible";
      return;
   }

   int x = N[i - 1], greatest = i;
   for (j = i; j < size; j++)
      if (N[j] < x && N[j] > N[greatest])
         greatest = j;

   swap(N[greatest], N[i - 1]);
   sort(N.begin() + i, N.begin() + size, greater<char>());

   cout<<"The Greatest smaller number with same set of digits is "<<N;

   return;
}

int main() {
   
   string N = "654232";
   int size = N.length();
   cout<<"The number is "<<N<<endl;
   calcGreatestSmallerElement(N, size);

   return 0;
}

আউটপুট

The number is 654232
The Greatest smaller number with same set of digits is 654223

  1. C++ এ একই সংখ্যক সেট বিটের সাথে সংখ্যা যোগ করে সর্বোচ্চ যোগফল

  2. C++ এ প্রদত্ত সংখ্যাগুলি দিয়ে তৈরি করা যেতে পারে এমন বৃহত্তম সংখ্যাটি খুঁজুন

  3. সবচেয়ে বড় বিশেষ প্রাইম খুঁজুন যা C++ এ প্রদত্ত সংখ্যার কম বা সমান

  4. C++ এ D দ্বারা বিভাজ্য N সংখ্যার সংখ্যা খুঁজুন