कार्य संख्या A के मान को अधिकतम करना है, इसके कुछ अंकों को दूसरी संख्या B में मौजूद अंकों से बदलकर। यदि A का मान अधिकतम नहीं किया जा सकता तो कोई अंक नहीं बदला जाएगा।
नोट - B का एक अंक केवल एक बार उपयोग किया जा सकता है।
आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है:
इनपुट
A = "1221" B = "1211"
आउटपुट
Maximum value of A possible: 2221
व्याख्या - हम यहां B से 2 चुनते हैं और इसे A के पहले 1 से बदलते हैं। यहां यह एकमात्र विकल्प है क्योंकि A के किसी अन्य अंक को 2 या 1 से बदलने से इसका मान नहीं बढ़ेगा।
इनपुट
A = "1002" B = "3200"
आउटपुट
Maximum value of A possible: 3202
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
- A के प्रत्येक अंक को B के एक अंक से बदला जाएगा यदि वह B के अंक से छोटा है।
- स्ट्रिंग B को आरोही क्रम में सॉर्ट करें।
- बाएं से A को पार करना शुरू करें।
- अब B को दाएं से पार करें।
- यदि A का अंक B के अंक से छोटा है तो A के अंक को B के अंक से बदलें और A पर पॉइंटर बढ़ाएं और B पर पॉइंटर घटाएं।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
// स्ट्रिंग के अधिकतम मान को रिटर्न करने का फंक्शन
string valueup(string str1, string str2) {
// अंकों को आरोही क्रम में सॉर्ट करें
sort(str2.begin(), str2.end());
int len1 = str1.length();
int len2 = str2.length();
int j = len2 - 1;
for (int i = 0; i < len1; i++) {
// यदि B के सभी अंक उपयोग हो गए
if (j < 0)
break;
if (str2[j] > str1[i]) {
str1[i] = str2[j];
j--; // एक बार अंक उपयोग हो गया
}
}
return str1;
}
// ड्राइवर कोड
int main() {
string a = "1204";
string b = "4521";
cout << valueup(a, b);
return 0;
}
आउटपुट
5424