সমস্যা বিবরণ
৪টি ডিজিট দেওয়া থাকলে, সেগুলো ব্যবহার করে ২৪ ঘণ্টা ফরম্যাটে (HH:MM) সর্বোচ্চ সম্ভাব্য সময় বের করতে হবে। প্রতিটি ডিজিট একবার ব্যবহার করা হবে।
সমাধানের পদ্ধতি (Gridi + Backtracking)
- ফ্রিকোয়েন্সি ম্যাপ বানান।
- ঘণ্টার দশকের স্থানে: ২, ১, ০ যেটি পাওয়া যায় সেটি নিন (২ হলে পরবর্তী ডিজিট ০-৩, অন্যথায় ০-৯)।
- ঘণ্টার এককের স্থানে: উপরের শর্ত অনুযায়ী সর্বোচ্চ ডিজিট নিন।
- মিনিটের দশকের স্থানে: ৫ থেকে ০ পর্যন্ত সর্বোচ্চ উপলব্ধ ডিজিট নিন।
- মিনিটের এককের স্থানে: ৯ থেকে ০ পর্যন্ত সর্বোচ্চ উপলব্ধ ডিজিট নিন।
- যদি কোনো স্থানে ডিজিট না পাওয়া যায়, "-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)