এই সমস্যায় আমাদের দুটি পূর্ণসংখ্যা 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