এখানে আমরা দেখব কিভাবে প্রদত্ত সংখ্যাগুলোকে পুনর্বিন্যাস করে সবচেয়ে বড় সংখ্যা তৈরি করা যায়। ধরুন সেখানে {45, 74, 23} দেওয়া আছে, প্রোগ্রামটি সবচেয়ে বড় সংখ্যাটি বের করবে, সেটি হল 744523। তাই প্রতিটি সংখ্যা সাজানো হবে না। কিন্তু সবচেয়ে বড় সংখ্যা করতে পুরো সংখ্যা বসানো হবে।
এই সমস্যাটি সমাধান করতে, আমরা স্ট্রিং সাজানোর ব্যবহার করব। কিন্তু তুলনার যুক্তি ভিন্ন। তুলনা করার ফাংশনটি 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<iostream> #include <string> #include &t;vector> #include <algorithm> 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<string> arr) { sort(arr.begin(), arr.end(), stringCompare); //sort the array for (int i =0; i < arr.size() ; i++ ) cout << arr[i]; } int main() { vector<string> arr; arr.push_back("45"); arr.push_back("74"); arr.push_back("23"); getLargest(arr); }
আউটপুট
744523