কম্পিউটার

C++-এ সর্বাধিক k অদলবদলের পর সবচেয়ে বড় পারমুটেশন


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি সর্বাধিক k অদলবদলের পরে সবচেয়ে বড় পারমুটেশন খুঁজে পায়।

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • অ্যারে শুরু করুন।
  • n + 1 আকার সহ সূচক সংরক্ষণ করতে একটি অ্যারে শুরু করুন।
  • অ্যারের উপর পুনরাবৃত্তি করুন এবং অবস্থান অ্যারেতে প্রতিটি উপাদানের সূচক সংরক্ষণ করুন।
  • একটি লুপ লিখুন যা n এবং k 0 এর চেয়ে বড় হওয়া পর্যন্ত পুনরাবৃত্তি করে।
    • একটি টেম্প ভেরিয়েবলে n - i উপাদানের অবস্থান সংরক্ষণ করুন।
    • বর্তমান উপাদান arr[i] এর অবস্থান[n - i] সহ আপডেট করুন।
    • বর্তমান সূচক i সহ অবস্থানের অবস্থান[n - i] আপডেট করুন।
    • বর্তমান উপাদান arr[i] কে arr[temp.Decrement k. এর সাথে অদলবদল করুন।
  • অ্যারের উপাদানগুলি মুদ্রণ করুন৷

উদাহরণ

আসুন কোডটি দেখি।

#include <bits/stdc++.h>
using namespace std;
void getLargestPermutation(int arr[], int n, int k) {
   int position[n + 1];
   for (int i = 0; i < n; ++i) {
      position[arr[i]] = i;
   }
   for (int i = 0; i < n && k; ++i) {
      if (arr[i] == n - i) {
         continue;
      }
      int temp = position[n - i];
      position[arr[i]] = position[n - i];
      position[n - i] = i;
      swap(arr[temp], arr[i]);
      --k;
   }
}
int main() {
   int arr[] = { 5, 3, 2, 6, 7, 1, 4 };
   int n = 7, k = 3;
   getLargestPermutation(arr, n, k);
   for (int i = 0; i < n; ++i) {
      cout << arr[i];
   }
   cout << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

7653214

উপসংহার

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


  1. C++ এ যোগফল S সহ মৌলিক P এর পরে মৌলিক সংখ্যা

  2. C++ এ K নেগেশানের পরে অ্যারের যোগফল সর্বাধিক করুন

  3. C++ এ প্যালিনড্রোম পারমুটেশন করতে ন্যূনতম অপসারণ

  4. অ্যারেতে সবচেয়ে বড় ডি খুঁজুন যেমন সি++ এ a + b + c =d