24 Game LeetCode solution in C++

1
class Solution {
2
public:
3
double cor = 0.001;
4
void dfs(vector<double> &cards, bool &res) {
5
if (res == true) return;
6
if (cards.size() == 1) {
7
if (abs(cards[0] - 24) < cor) res = true;
8
return;
9
}
10
for (int i = 0; i < cards.size(); i++) {
11
for (int j = 0; j < i; j++) {
12
double p = cards[i], q = cards[j];
13
vector<double> t{p + q, q - p, p - q, p * q};
14
if (p > cor) t.push_back(q / p);
15
if (q > cor) t.push_back(p / q);
16
cards.erase(cards.begin() + i);
17
cards.erase(cards.begin() + j);
18
for (double d : t) {
19
cards.push_back(d);
20
dfs(cards, res);
21
cards.pop_back();
22
}
23
cards.insert(cards.begin() + j, q);
24
cards.insert(cards.begin() + i, p);
25
}
26
}
27
}
28
bool judgePoint24(vector<int> &cards) {
29
bool res = false;
30
vector<double> card(cards.begin(), cards.end());
31
dfs(card, res);
32
return res;
33
}
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0