-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path1.cpp
More file actions
executable file
·57 lines (57 loc) · 1.87 KB
/
1.cpp
File metadata and controls
executable file
·57 lines (57 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> A_mirror;
vector<int> res;
void dfs(vector<int> current, bool enume[4], int count_n){
if (count_n == 4){
if (current[0] > 2) return;
if (current[0] == 2 && current[1] > 3) return;
if (current[2] > 5) return;
if (current[0] > res[0]){res = current;return;}
if (current[0] == res[0] && current[1] > res[1]){res = current;return;}
if (current[0] == res[0] && current[1] == res[1] && current[2] > res[2]){res = current; return;}
if (current[0] == res[0] && current[1] == res[1] && current[2] == res[2] && current[3] > res[3]){res = current; return;}
return;
}
for (int i = 0; i < 4; i++){
if (count_n == 2 && A_mirror[i] > 5) continue;
if (count_n == 0 && A_mirror[i] > 2) continue;
if (enume[i] == true){
vector<int> tmp = current;
tmp.push_back(A_mirror[i]);
enume[i] = false;
dfs(tmp,enume,count_n+1);
enume[i] = true;
}
}
}
string largestTimeFromDigits(vector<int>& A) {
res.push_back(-1); res.push_back(-1);res.push_back(-1);res.push_back(-1);
bool tmp[4] = {true,true,true,true};
A_mirror = A;
vector<int> empty;
dfs(empty,tmp,0);
string answer = "";
if (res[0] == -1) return "";
else {
for (int i = 0; i < 4; i++){
answer += to_string(res[i]);
if (i ==1) answer += ":";
}
}
return answer;
}
};
int main(){
Solution s = Solution();
vector<int> A;
A.push_back(2);
A.push_back(1);
A.push_back(3);
A.push_back(4);
cout<<s.largestTimeFromDigits(A)<<endl;
}