Skip to content

Commit 933bc82

Browse files
authored
Create 679.24-Game_v3.cpp
1 parent d5f37b2 commit 933bc82

1 file changed

Lines changed: 45 additions & 0 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public:
3+
bool judgePoint24(vector<int>& nums)
4+
{
5+
vector<double>Nums(4);
6+
for (int i=0; i<4; i++) Nums[i] = nums[i];
7+
sort(Nums.begin(), Nums.end());
8+
9+
while (1)
10+
{
11+
unordered_set<double> results = DFS(Nums,0,3);
12+
for (auto a:results)
13+
{
14+
if (abs(a-24)<1e-10)
15+
return true;
16+
}
17+
if (next_permutation(Nums.begin(), Nums.end()) == false)
18+
break;
19+
}
20+
return false;
21+
}
22+
23+
unordered_set<double> DFS(vector<double> &nums, int a, int b)
24+
{
25+
if (a==b) return {nums[a]};
26+
27+
unordered_set<double>results;
28+
29+
for (int i=a; i<b; i++)
30+
{
31+
unordered_set<double>A = DFS(nums,a,i);
32+
unordered_set<double>B = DFS(nums,i+1,b);
33+
for (double x:A)
34+
for (double y:B)
35+
{
36+
results.insert(x+y);
37+
results.insert(x-y);
38+
results.insert(x*y);
39+
if (y!=0)
40+
results.insert(x/y);
41+
}
42+
}
43+
return results;
44+
}
45+
};

0 commit comments

Comments
 (0)