Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 배열의 숫자로 구성된 두 숫자의 최소 합

<시간/>

설명

0에서 9까지의 값을 포함하는 숫자 배열이 주어집니다. 작업은 배열의 숫자로 구성된 두 숫자의 가능한 최소 합을 찾는 것입니다. 주어진 배열의 모든 숫자를 사용해야 한다는 점에 유의하십시오.

예시

입력 배열이 {7, 5, 1, 3, 2, 4}이면 ​​최소 합은 382이므로 135와 247 두 개의 숫자를 만들 수 있습니다.

알고리즘

  • 배열을 오름차순으로 정렬
  • 정렬된 배열에서 또는 짝수 및 홀수 인덱스에서 숫자를 선택하여 두 개의 숫자 생성

예시

#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;
}

위의 프로그램을 컴파일하고 실행할 때. 다음 출력을 생성합니다 -

출력

Minimum sum = 382