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

সর্বোচ্চ K بار স্ব্যাপ করে সম্ভাব্য সর্বোচ্চ সংখ্যা বের করা C++-তে


এই সমস্যায় আমাদের দুটি পূর্ণসংখ্যা n এবং k দেওয়া আছে। আমাদের কাজ সর্বোচ্চ K বার স্ব্যাপ করে সম্ভাব্য সর্বোচ্চ সংখ্যা বের করা।

সমস্যা বর্ণনা: এখানে আমাদের সেই সংখ্যা বের করতে হবে যা সর্বোচ্চ এবং সংখ্যাটির অঙ্কগুলো সর্বোচ্চ k بار স্ব্যাপ করে তৈরি করা যায়।

উদাহরণ:

ইনপুট: n = 538, k = 1

আউটপুট: 835

ব্যাখ্যা: ৮ এবং ৫ কে স্ব্যাপ করলে ৮৩৫ পাওয়া যায়।

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

সমস্যা সমাধানের জন্য, আমাদের সংখ্যার অঙ্কগুলো k বার স্ব্যাপ করে চেক করতে হবে যে কোনটি সর্বোচ্চ।

আমাদের সংখ্যার সর্বোচ্চ অঙ্কটি খুঁজে বের করে সেটিকে প্রথম ইন্ডেক্সে স্ব্যাপ করতে হবে। এবং এইভাবে প্রথম k ইন্ডেক্সের জন্য চালিয়ে যেতে হবে।

আমাদের সমাধানের কাজ দেখানোর প্রোগ্রাম

উদাহরণ

#include <bits/stdc++.h> using namespace std; void calcMaxNumAfterSwap(string number, int k, string& maxString, int n){        if (k == 0)       return;    for (int i = 0; i < n - 1; i++) {       for (int j = i + 1; j < n; j++) {          if (number[i] < number[j]) {             swap(number[i], number[j]);             if (number.compare(maxString) > 0)                maxString = number;             calcMaxNumAfterSwap(number, k - 1, maxString, n);             swap(number[i], number[j]);          }       }    } } int main(){        string str = "15263";    int k = 3;    int size = str.length();    string maxString = str;    calcMaxNumAfterSwap(str, k, maxString, size);    cout<<"The maximum number created after "<<k<<" swaps is "<<maxString;    return 0; }

আউটপুট

The maximum number created after 3 swaps is 65321

  1. একটি সংখ্যা এবং তার সর্বোচ্চ প্রাইম ফ্যাক্টরের যোগফল (C++)

  2. C++-এ একটি সংখ্যার সর্বোচ্চ ঘাত যা ফ্যাক্টোরিয়ালকে ভাগ করে দেয়

  3. C++-এ অ্যারেতে সর্বোচ্চ গুণফল দায়ক কোয়াড্রুপল (Quadruple) নির্ণয়

  4. সি++ প্রোগ্রাম: সর্বোচ্চ এজ-ডিসজয়েন্ট পাথ (Maximum Number of Edge Disjoint Paths) বের করা