Computer >> Máy Tính >  >> Lập trình >> C ++

Tối đa hóa số đã cho bằng cách thay thế một đoạn chữ số bằng các chữ số thay thế được cho trong C ++

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