classSolution{public:booljudgePoint24(vector<int>&nums){vector<double>doubleNums;for(constintnum:nums)doubleNums.push_back(num);returndfs(doubleNums);}private:booldfs(vector<double>&nums){if(nums.size()==1)returnabs(nums[0]-24)<0.001;for(inti=0;i<nums.size();++i)for(intj=0;j<i;++j){for(constdoublenum:generate(nums[i],nums[j])){vector<double>nextRound{num};for(intk=0;k<nums.size();++k){if(k==i||k==j)// Used in generate()continue;nextRound.push_back(nums[k]);}if(dfs(nextRound))returntrue;}}returnfalse;}vector<double>generate(doublea,doubleb){return{a*b,a/b,b/a,a+b,a-b,b-a};}};
classSolution{publicbooleanjudgePoint24(int[]nums){List<Double>doubleNums=newArrayList<>();for(finalintnum:nums)doubleNums.add((double)num);returndfs(doubleNums);}privatebooleandfs(List<Double>nums){if(nums.size()==1)returnMath.abs(nums.get(0)-24.0)<0.001;for(inti=0;i<nums.size();++i)for(intj=i+1;j<nums.size();++j)for(finaldoublenum:generate(nums.get(i),nums.get(j))){List<Double>nextRound=newArrayList<>(Arrays.asList(num));for(intk=0;k<nums.size();++k){if(k==i||k==j)// Used in generate()continue;nextRound.add(nums.get(k));}if(dfs(nextRound))returntrue;}returnfalse;}privatedouble[]generate(doublea,doubleb){returnnewdouble[]{a*b,a/b,b/a,a+b,a-b,b-a};}}