Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Maximum possible time that can be formed from four digits in C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมหาเวลาสูงสุดที่เป็นไปได้ที่สร้างจาก 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