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

更新于: 2019-12-20

410 浏览

开始你的 职业生涯

完成课程以获得认证

开始
广告