Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เพิ่มค่า A ให้สูงสุดโดยแทนที่ตัวเลขบางหลักด้วยตัวเลข B ใน C++


ภารกิจคือเพิ่มค่าของตัวเลข A ให้ใหญ่สุดโดยการแทนที่ตัวเลขบางหลักด้วยตัวเลขที่มีอยู่ในตัวเลข B อื่น จะไม่มีการแทนที่ตัวเลขหากค่าของ A ไม่สามารถขยายให้ใหญ่สุดได้

หมายเหตุ − ตัวเลขจาก B สามารถใช้ได้เพียงครั้งเดียว

ตอนนี้มาทำความเข้าใจสิ่งที่เราต้องทำโดยใช้ตัวอย่าง -

ป้อนข้อมูล

A = “1221”
B = “1211”

ผลผลิต

Maximum value of A possible 2221

คำอธิบาย − เราเลือก 2 จาก B และแทนที่ด้วย 1 ตัวแรกของ A นี่เป็นทางเลือกเดียวที่จะแทนที่ตัวเลขอื่น ๆ ของ A ด้วย 2 หรือ 1 จะไม่เพิ่มมูลค่าของมัน

ป้อนข้อมูล

A = “1002”
B = “3200”

ผลผลิต

Maximum value of A possible 3202

แนวทางที่ใช้ในโปรแกรมด้านล่างดังนี้

  • ตัวเลขแต่ละตัวใน A จะถูกแทนที่ด้วยตัวเลข B หากน้อยกว่า B

  • เรียงลำดับสตริง B จากน้อยไปมาก

  • เริ่มข้าม A จากซ้าย

  • ตอนนี้ข้าม B จากขวา

  • แทนที่ตัวเลขใน A ด้วยตัวเลขของ B หากมีขนาดเล็กกว่าและเพิ่มตัวชี้ที่ A และตัวชี้ลดที่ B

ตัวอย่าง

#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