कार्य संख्या A के मान को अधिकतम करने के लिए इसके कुछ अंकों को किसी अन्य संख्या B में मौजूद अंकों के साथ प्रतिस्थापित करना है। यदि A के मान को अधिकतम नहीं किया जा सकता है तो कोई अंक नहीं बदला जाएगा।
नोट − B से एक अंक का उपयोग केवल एक बार किया जा सकता है।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है -
इनपुट
A = “1221” B = “1211”
आउटपुट
Maximum value of A possible 2221
स्पष्टीकरण - हम यहां बी में से 2 का चयन करते हैं और इसे ए के पहले 1 के साथ बदलते हैं। यहां यह एकमात्र विकल्प है क्योंकि ए के किसी अन्य अंक को 2 या 1 के साथ बदलने से इसका मूल्य नहीं बढ़ेगा।
इनपुट
A = “1002” B = “3200”
आउटपुट
Maximum value of A possible 3202
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
A में प्रत्येक अंक को B के अंक से बदल दिया जाएगा यदि यह 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