Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng tối thiểu của hai số được tạo từ các chữ số của một mảng trong C ++

Mô tả

Cho một mảng các chữ số chứa các giá trị từ 0 đến 9. Nhiệm vụ là tìm tổng nhỏ nhất có thể có của hai số được tạo thành từ các chữ số của mảng. Xin lưu ý rằng chúng ta phải sử dụng các ký hiệu của mảng đã cho

Ví dụ

Nếu mảng đầu vào là {7, 5, 1, 3, 2, 4} thì tổng tối thiểu là 382 vì, chúng ta có thể tạo hai số 135 và 247.

Thuật toán

  • Sắp xếp mảng theo thứ tự tăng dần
  • Tạo hai số bằng cách chọn một chữ số từ mảng đã sắp xếp, tức là từ chỉ số chẵn và lẻ

Ví dụ

#include <bits/stdc++.h>
using namespace std;
int getMinSum(int *arr, int n) {
   sort(arr, arr + n);
   int a = 0;
   int 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;
}

Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau -

Đầu ra

Minimum sum = 382