C ++中给定数字最多的时间

假设我们有一个由4位数字组成的数组,那么我们必须找到最大的24小时制时间。我们知道最小的24小时时间是00:00,最大的时间是23:59。从00:00开始,如果自午夜起经过了更多时间,则时间会更大。我们必须以长度为5的字符串形式返回答案。如果没有有效的时间要返回,则返回一个空字符串。

因此,如果输入类似于[1,2,3,4],则输出将为“ 23:41”

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个函数isValid(),它将使用字符串a,

  • 如果a [0]>'2',则-

    • 返回假

  • 如果a [0]与'2'相同且a [1]>'3',则-

    • 返回假

  • 如果a [3]>'5',则-

    • 返回假

  • 返回真

  • 定义一个函数dfs(),它将采用数组A,res,cur,

  • 如果cur的大小等于5,则-

    • RES:=当前

    • 如果isValid(cur)且cur> res,则-

    • 返回

  • 对于初始化i:= 0,当i <4时,更新(将i增加1),请执行-

    • tmp:= A [i]

    • cur:= cur + A [i] + ASCII的'0'

    • 如果cur的大小等于2,则-

    • A [i]:= -1

    • dfs(A,res,cur)

    • A [i]:= tmp

    • 从cur删除最后一个元素

    • 如果cur的大小等于2,则-

    • cur:= cur连接到':'

    • 从cur删除最后一个元素

    • 如果A [i]不等于-1,则-

    • 从主要方法中执行以下操作-

    • res:=空字符串,tmp:=空字符串

    • dfs(A,res,tmp)

    • 返回资源

    让我们看下面的实现以更好地理解-

    示例

    #include <bits/stdc++.h>

    using namespace std;

    class Solution {

    public:

       void dfs(vector<int>& A, string& res, string& cur) {

          if (cur.size() == 5) {

             if (isValid(cur) && cur > res)

                res = cur;

                return;

             }

             for (int i = 0; i < 4; ++i) {

                if (A[i] != -1) {

                   int tmp = A[i];

                   cur += A[i] + '0';

                if (cur.size() == 2)

                   cur += ':';

                   A[i] = -1;

                   dfs(A, res, cur);

                   A[i] = tmp;

                   cur.pop_back();

                   if (cur.size() == 2)

                      cur.pop_back();

                }

             }

       }

       bool isValid(const string a) {

          if (a[0] > '2')

             return false;

             if (a[0] == '2' && a[1] > '3')

                return false;

             if (a[3] > '5')

                return false;

             return true;

       }

       string largestTimeFromDigits(vector<int>& A) {

          string res = "", tmp = "";

          dfs(A, res, tmp);

          return res;

       }

    };

    main(){

    Solution ob;

    vector<int> v = {1,2,3,4};

    cout << (ob.largestTimeFromDigits(v));

    }

    输入值

    {1,2,3,4}

    输出结果

    23:41

    以上是 C ++中给定数字最多的时间 的全部内容, 来源链接: utcz.com/z/322354.html

    回到顶部