在 C++ 中通过用 B 中的一些数字替换 A 的一些数字来最大化 A 的值


任务是通过替换数字 A 中的一些数字为另一个数字 B 中存在的数字来最大化数字 A 的值。如果无法最大化 A 的值,则不会替换任何数字。

注意 - B 中的数字只能使用一次。

现在让我们用一个例子来理解我们必须做什么 -

输入 

A = “1221”
B = “1211”

输出 

Maximum value of A possible 2221

解释 - 我们在这里从 B 中选择 2 并用它替换 A 的第一个 1。这是唯一的选择,因为用 2 或 1 替换 A 的任何其他数字都不会增加它的值。

输入 

A = “1002”
B = “3200”

输出 

Maximum value of A possible 3202

下面程序中使用的途径如下

  • 如果 A 中的每个数字都小于 B 中的数字,则将 A 中的每个数字替换为 B 中的一个数字。

  • 按升序对字符串 B 进行排序。

  • 从左开始遍历 A。

  • 现在从右开始遍历 B。

  • 如果 A 中的数字小于 B 中的数字,则将 A 中的数字替换为 B 中的数字,并将 A 的指针加 1,B 的指针减 1。

示例

 实时演示

#include <bits/stdc++.h>
using namespace std;
// Function to return the maximized value of a
string valueup(string str1, string str2){
   // Sort digits in ascending order
   sort(str2.begin(), str2.end());
   int len1 = str1.length();
   int len2 = str2.length();
   int j = len2 - 1;
   for (int i = 0; i < len1; i++) {
      // If all the digits of b consumed
      if (j < 0)
         break;
      if (str2[j] > str1[i]) {
         str1[i] = str2[j];
         j--; //once digit used
      }
   }
   return str1;
}
// Driver code
int main(){
   string a = "1204";
   string b = "4521";
   cout << valueup(a, b);
   return 0;
}

输出

如果我们运行以上代码,我们将得到以下输出 -

5424

更新于: 2020-08-14

115 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告