কম্পিউটার টিউটোরিয়াল

সি++-এ প্রদত্ত সংখ্যার সর্বোচ্চ ছোট পারমিউটেশন (Permutation) বের করা

এই সমস্যাতে, আমাদের একটি বড় সংখ্যা N দেওয়া আছে। আমাদের কাজ হলো প্রদত্ত সংখ্যার সর্বোচ্চ ছোট পারমিউটেশন (permutation) বের করা।

উদাহরণ দিয়ে সমস্যা বোঝা যাক,

ইনপুট

N = 4529016

আউটপুট

1024569

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

এই সমস্যার একটি সহজ সমাধান হলো লং ইন্টিজার মানটি স্ট্রিং-এ সংরক্ষণ করা। তারপর স্ট্রিংটি সর্ট করলে সেটিই আমাদের ফলাফল। কিন্তু যদি কোনো লিডিং জিরো (leading zero) থাকে, তবে সেগুলো প্রথম নন-জিরো মানের পরে সরিয়ে দিতে হবে।

সমাধান কোড:

উদাহরণ

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

string smallestNumPer(string s) {
    int len = s.length();
    sort(s.begin(), s.end());
    int i = 0;
    while (s[i] == '0')
        i++;
    swap(s[0], s[i]);
    return s;
}

int main() {
    string s = "4529016";
    cout<<"The number is "<<s<<endl;
    cout<<"The smallest permutation of the number is "<<smallestNumPer(s);
    return 0;
}

আউটপুট

The number is 4529016
The smallest permutation of the number is 1024569
  1. C++-এ থ্রেশহোল্ড দেওয়া থাকলে ন্যূনতম ভাজক বের করা

  2. সর্বনিম্ন সংখ্যা K খুঁজে বের করা যাতে K % p = 0 এবং q % K = 0 C++-তে

  3. n XOR n+1 দেওয়া k-এর সমান হয় এমন ন্যূনতম n খুঁজে বের করা C++-তে

  4. C++ প্রোগ্রাম: স্ট্রিংয়ের পারমুটেশন সংখ্যা বের করা