বিবরণ
০ থেকে ৯ পর্যন্ত অঙ্কयुक्त একটি অ্যারে দেওয়া আছে। অ্যারেতে থাকা সব অঙ্ক ব্যবহার করে দুটি সংখ্যা বানাতে হবে যাতে তাদের যোগফল ন্যূনতম হয়। উদাহরণ: {7,5,1,3,2,4} থেকে ১৩৫ এবং ২৪৭ বানিয়ে যোগফল ৩৮২।
অ্যালগরিদম
- অ্যারেটি আরোহী ক্রমে সর্ট করুন।
- সর্ট করা অ্যারেতে অল্টারনেটিভ আঁকি (ইভেন ও অড্ড ইনডেক্স) নিয়ে দুটি সংখ্যা তৈরি করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int getMinSum(int *arr, int n) {
sort(arr, arr + n);
int a = 0, b = 0;
for (int i = 0; i < n; ++i) {
if (i % 2 == 0) a = a * 10 + arr[i];
else b = b * 10 + arr[i];
}
return a + b;
}
int main() {
int arr[] = {7, 5, 1, 3, 2, 4};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Minimum sum = " << getMinSum(arr, n) << endl;
return 0;
}
আউটপুট
Minimum sum = 382