কম্পিউটার টিউটোরিয়াল

C++-তে একটি সংখ্যার ডিজিট সেগমেন্ট রিপ্লেস করে মান সর্বোচ্চ করা


টাস্ক হলো N ডিজিটের একটি সংখ্যা দিয়ে ০-৯ ডিজিটের বিকল্প ডিজিট থাকা একটি অ্যারে ব্যবহার করে সংখ্যাটির মান সর্বোচ্চ করা। শর্ত: শুধু একটি কনসিকিউটিভ সেগমেন্ট (সubesquent digits) একবার রিপ্লেস করা যাবে।

ইনপুট

N=1234, arr[]={3,0,1,5,7,7,8,2,9,4}

আউটপুট

1257

ব্যাখ্যা − ৩ কে ৫ (arr[3]) দিয়ে এবং ৪ কে ৭ (arr[4]) দিয়ে রিপ্লেস করা হয়েছে।

ইনপুট

N=5183, arr[]={3,0,1,5,7,7,8,2,9,4}

আউটপুট

7183

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • Max() ফাংশনে স্ট্রিং সাইজ N নিন।
  • লুপ চালিয়ে সেই ডিজিট খুঁজুন যার বিকল্পটি নিজের চেয়ে বড়।
  • সেটি রিপ্লেস করুন এবং পরবর্তী ডিজিটগুলোর ওপর যেতে থাকুন যতক্ষণ না বিকল্পটি নিজের চেয়ে ছোট পাওয়া যায়।
  • প্রথম রিপ্লেস হওয়ার পর ফাংশন থেকে রিটার্ন করুন (কারণ শুধু এক সেগমেন্ট রিপ্লেস করা যাবে)।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

string Max(string str, int arr[]) {
    int N = str.size();
    for (int i = 0; i < N; i++) {
        int digit = str[i] - '0';
        if (digit < arr[digit]) {
            int j = i;
            while (j < N && (str[j] - '0' <= arr[str[j] - '0'])) {
                str[j] = '0' + arr[str[j] - '0'];
                j++;
            }
            return str;
        }
    }
    return str; // কোনো পরিবর্তন না হলে মূল স্ট্রিং রিটার্ন
}

int main() {
    string str = "2075";
    int arr[] = {3, 0, 1, 5, 7, 7, 8, 2, 9, 4};
    cout << "Maximized number: " << Max(str, arr);
    return 0;
}

আউটপুট

Maximized number: 2375
  1. ৪ ও ৭ ডিজিট দিয়ে ন্যূনতম লাকি নম্বর (নির্দিষ্ট সম) C++-তে

  2. দেওয়া অঙ্কগুলো দিয়ে গঠিত সর্বোচ্চ সংখ্যা খুঁজে বের করা C++-তে

  3. C++-এ একটি সংখ্যা তার অঙ্কগুলোর ফ্যাক্টোরিয়ালের যোগফল দিয়ে বিভাজ্য কিনা চেক করা

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা