Nhiệm vụ được giao là tối đa hóa một số nhất định có số chữ số là ‘N’ bằng cách thay thế chữ số của nó bằng cách sử dụng một mảng khác có 10 chữ số để thay thế cho tất cả các số có một chữ số từ 0 đến 9,
Điều kiện đã cho là chỉ có thể thay thế một đoạn số liên tiếp và chỉ một lần.
Đầu vào
N=1234, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4}
Đầu ra
1257
Giải thích
Số 3 có thể được thay thế bằng số thay thế 5 =arr [3]
Số 4 có thể được thay thế bằng số thay thế 7 =arr [4]
Đầu vào
N=5183, arr[]={3 ,0 ,1 ,5 ,7 ,7 ,8 ,2 ,9 ,4}
Đầu ra
7183
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Trong hàm Max (), hãy tạo một biến ‘N’ kiểu int để lưu trữ kích thước của số.
-
Lặp lại từ i =0 cho đến i
-
Sau đó, thay thế số bằng số thay thế của nó.
-
Làm điều này cho số sắp tới cho đến khi không tìm thấy số có thay thế nhỏ hơn
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -
Maximize the given number by replacing a segment of digits with the alternate digits given is: 2375