এখানে আমরা দেখব কীভাবে দেওয়া সংখ্যাগুলোকে রি-অ্যারেঞ্জ করে সবচেয়ে বড় সংখ্যা তৈরি করা যায়। ধরা যাক {৪৫, ৭৪, ২৩} দেওয়া আছে। প্রোগ্রামটি সবচেয়ে বড় সংখ্যা বের করবে, যা হলো ৭৪৪৫২৩। এখানে প্রতিটি ডিজিটকে না রি-অ্যারেঞ্জ করে পুরো সংখ্যাগুলোকে সাজিয়ে সবচেয়ে বড় সংখ্যা তৈরি করা হয়।
এই সমস্যাটি সমাধানের জন্য আমরা স্ট্রিং সর্টিং ব্যবহার করব। কিন্তু কমপ্যারিজন লজিক ভিন্ন হবে। কমপ্যারিং ফাংশন দুটি সংখ্যা a এবং b নেবে, তারপর সেগুলো কনক্যাটেনেট করে ab এবং ba তৈরি করবে। যেটি বড়, সেটিই বিবেচ্য।
অ্যালগরিদম
compareStrings(a, b)
begin ab := concatenate b with a ba := concatenate a with b compare ba with ab, then return 1 if ba is bigger, otherwise return 0 end getLargest(arr): begin sort the arr with the comparison logic using compareString() for each string s in arr, do print s done end
উদাহরণ
#include#include #include #include using namespace std; int stringCompare(string a, string b) { string ab = a.append(b); string ba = b.append(a); return ab.compare(ba) > 0 ? 1: 0; } void getLargest(vector arr) { sort(arr.begin(), arr.end(), stringCompare); //sort the array for (int i =0; i < arr.size() ; i++ ) cout << arr[i]; } int main() { vector arr; arr.push_back("45"); arr.push_back("74"); arr.push_back("23"); getLargest(arr); }
আউটপুট
744523