ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมหาเวลาสูงสุดที่เป็นไปได้ที่สร้างจาก 4 หลักเลข
เราจะได้รับอาร์เรย์ 4 หลักเลข งานคือหาเวลาสูงสุด (รูปแบบ 24 ชั่วโมง) ที่สร้างได้จาก 4 หลักเลขนั้น
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
map<int, int> getFrequencyMap(int arr[], int n) {
map<int, int> hashMap;
for (int i = 0; i < n; i++) hashMap[arr[i]]++;
return hashMap;
}
bool hasDigit(map<int, int>* hashMap, int digit) {
if ((*hashMap)[digit]) { (*hashMap)[digit]--; return true; }
return false;
}
string getMaxtime_value(int arr[], int n) {
map<int, int> hashMap = getFrequencyMap(arr, n);
int i; bool flag; string time_value = "";
flag = false;
for (i = 2; i >= 0; i--) {
if (hasDigit(&hashMap, i)) { flag = true; time_value += char(i + '0'); break; }
}
if (!flag) return "-1";
flag = false;
if (time_value[0] == '2') {
for (i = 3; i >= 0; i--) {
if (hasDigit(&hashMap, i)) { flag = true; time_value += char(i + '0'); break; }
}
} else {
for (i = 9; i >= 0; i--) {
if (hasDigit(&hashMap, i)) { flag = true; time_value += char(i + '0'); break; }
}
}
if (!flag) return "-1";
time_value += ":";
flag = false;
for (i = 5; i >= 0; i--) {
if (hasDigit(&hashMap, i)) { flag = true; time_value += char(i + '0'); break; }
}
if (!flag) return "-1";
flag = false;
for (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