Computer >> Máy Tính >  >> Lập trình >> C ++

Thời gian tối đa có thể được tạo từ bốn chữ số trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm thời gian tối đa có thể có thể được hình thành từ bốn chữ số.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng bao gồm 4 chữ số. Nhiệm vụ của chúng tôi là tìm ra thời gian tối đa (định dạng 24 giờ) có thể được hình thành bằng cách sử dụng bốn chữ số đó.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//returning updated frequency map
map<int, int> getFrequencyMap(int arr[], int n) {
   map<int, int> hashMap;
   for (int i = 0; i < n; i++) {
      hashMap[arr[i]]++;
   }
   return hashMap;
}
//checking if the digit is present in frequency map
bool hasDigit(map<int, int>* hashMap, int digit) {
   if ((*hashMap)[digit]) {
      (*hashMap)[digit]--;
      return true;
   }
   return false;
}
//returning maximum time in 24 hour format
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 + 48;
         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 + 48;
            break;
         }
      }
   }
   else {
      for (i = 9; i >= 0; i--) {
         if (hasDigit(&hashMap, i)) {
            flag = true;
            time_value += (char)i + 48;
            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 + 48;
         break;
      }
   }
   if (!flag)
      return "-1";
   flag = false;
   for (i = 9; i >= 0; i--) {
      if (hasDigit(&hashMap, i)) {
         flag = true;
         time_value += (char)i + 48;
         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;
}

Đầu ra

09:00