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