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

C++-এ ৪টি ডিজিট থেকে সর্বোচ্চ সম্ভাব্য সময় (২৪ ঘণ্টা ফরম্যাট) বের করার প্রোগ্রাম


সমস্যা বিবরণ

৪টি ডিজিট দেওয়া থাকলে, সেগুলো ব্যবহার করে ২৪ ঘণ্টা ফরম্যাটে (HH:MM) সর্বোচ্চ সম্ভাব্য সময় বের করতে হবে। প্রতিটি ডিজিট একবার ব্যবহার করা হবে।

সমাধানের পদ্ধতি (Gridi + Backtracking)

  1. ফ্রিকোয়েন্সি ম্যাপ বানান।
  2. ঘণ্টার দশকের স্থানে: ২, ১, ০ যেটি পাওয়া যায় সেটি নিন (২ হলে পরবর্তী ডিজিট ০-৩, অন্যথায় ০-৯)।
  3. ঘণ্টার এককের স্থানে: উপরের শর্ত অনুযায়ী সর্বোচ্চ ডিজিট নিন।
  4. মিনিটের দশকের স্থানে: ৫ থেকে ০ পর্যন্ত সর্বোচ্চ উপলব্ধ ডিজিট নিন।
  5. মিনিটের এককের স্থানে: ৯ থেকে ০ পর্যন্ত সর্বোচ্চ উপলব্ধ ডিজিট নিন।
  6. যদি কোনো স্থানে ডিজিট না পাওয়া যায়, "-1" রিটার্ন করুন।

C++ কোড উদাহরণ

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

map getFrequencyMap(int arr[], int n) {
    map hashMap;
    for (int i = 0; i < n; i++) hashMap[arr[i]]++;
    return hashMap;
}

bool hasDigit(map* hashMap, int digit) {
    if ((*hashMap)[digit]) {
        (*hashMap)[digit]--;
        return true;
    }
    return false;
}

string getMaxtime_value(int arr[], int n) {
    map hashMap = getFrequencyMap(arr, n);
    string time_value = "";
    bool flag;
    
    // Hour tens (0-2)
    flag = false;
    for (int i = 2; i >= 0; i--) {
        if (hasDigit(&hashMap, i)) {
            flag = true;
            time_value += char(i + '0');
            break;
        }
    }
    if (!flag) return "-1";
    
    // Hour units
    flag = false;
    if (time_value[0] == '2') {
        for (int i = 3; i >= 0; i--) {
            if (hasDigit(&hashMap, i)) {
                flag = true;
                time_value += char(i + '0');
                break;
            }
        }
    } else {
        for (int i = 9; i >= 0; i--) {
            if (hasDigit(&hashMap, i)) {
                flag = true;
                time_value += char(i + '0');
                break;
            }
        }
    }
    if (!flag) return "-1";
    
    time_value += ":";
    
    // Minute tens (0-5)
    flag = false;
    for (int i = 5; i >= 0; i--) {
        if (hasDigit(&hashMap, i)) {
            flag = true;
            time_value += char(i + '0');
            break;
        }
    }
    if (!flag) return "-1";
    
    // Minute units (0-9)
    flag = false;
    for (int i = 9; i >= 0; i--) {
        if (hasDigit(&hashMap, i)) {
            flag = true;
            time_value += char(i + '0');
            break;
        }
    }
    if (!flag) return "-1";
    
    return time_value;
}

int main() {
    int arr[] = {0, 0, 0, 9};
    int n = sizeof(arr) / sizeof(int);
    cout << getMaxtime_value(arr, n);
    return 0;
}

আউটপুট

09:00

জটিলতা

  • সময়: O(1) — কনস্ট্যান্ট অপারেশন
  • স্থান: O(1)
  1. C++ প্রোগ্রাম: গ্রাফ থেকে এজ মুছে স্কোর সর্বনিম্ন করায় সর্বোচ্চ কমতি

  2. C++-এ নিচ থেকে ডানে আলো ফেরাতে সর্বোচ্চ মিরর গণনা

  3. C++-এ একটি দিয়ে দেয়া সংখ্যার অঙ্ক ব্যবহার করে সর্বোচ্চ সংখ্যা নির্ণয়

  4. সি++-এ যেসব ফাংশন ওভারলোড করা যায় না