कार्य को देखते हुए किसी दी गई संख्या को अंकों की 'एन' संख्या के साथ अधिकतम करना है, इसके अंक को किसी अन्य सरणी का उपयोग करके बदलना है जिसमें सभी एकल अंकों की संख्या 0 से 9 के विकल्प के रूप में 10 अंक होते हैं,
दी गई शर्त यह है कि संख्याओं के केवल एक क्रमागत खंड को केवल एक बार बदला जा सकता है।
इनपुट
N=1234, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4} आउटपुट
1257
स्पष्टीकरण
संख्या 3 को इसके विकल्प 5=arr[3]
. से बदला जा सकता हैसंख्या 4 को इसके विकल्प 7=arr[4]
. से बदला जा सकता हैइनपुट
N=5183, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4} आउटपुट
7183
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
फ़ंक्शन में Max() संख्या के आकार को संग्रहीत करने के लिए int प्रकार का एक चर 'N' बनाएँ।
-
i=0 से i
-
फिर नंबर को उसके विकल्प से बदलें।
-
इसे आगामी संख्या के लिए तब तक करें जब तक कि छोटे विकल्प वाली संख्या न मिल जाए
उदाहरण
#include <bits/stdc++.h>
using namespace std;
string Max(string str, int arr[]){
int N = str.size();
//Iterating till the end of string
for (int i = 0; i < N; i++) {
//Checking if it is greater or not
if (str[i] - '0' < arr[str[i] - '0']) {
int j = i;
//Replacing with the alternate till smaller
while (j < N && (str[j] - '0' <= arr[str[j] - '0'])) {
str[j] = '0' + arr[str[j] - '0'];
j++;
}
return str;
}
}
// Returning original str if there is no change
return str;
}
//Main function
int main(){
string str = "2075";
int arr[] = {3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4 };
cout <<” Maximize the given number by replacing a segment of digits with the alternate digits given is: ” <<Max(str, arr);
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
Maximize the given number by replacing a segment of digits with the alternate digits given is: 2375