এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি সর্বাধিক 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
উপসংহার
টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।