题目:
你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。示例 1:输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24示例 2:输入: [1, 2, 1, 2]输出: False来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/24-game著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
答案:
时间:
10min
class Solution:def judgePoint24(self, nums: List[int]) -> bool:if not nums:return Falsedef dfs(nums):n=len(nums)if n==1: return abs(nums[0]-24)<1e-6for i in range(n):for j in range(i+1,n):newnums=[nums[k] for k in range(n) if i!=k and j!=k]if dfs(newnums+[nums[i]+nums[j]]):return Trueif dfs(newnums+[nums[i]-nums[j]]):return Trueif dfs(newnums+[nums[i]*nums[j]]):return Trueif dfs(newnums+[nums[j]-nums[i]]):return Trueif nums[j]!=0 and dfs(newnums+[nums[i]/nums[j]]):return Trueif nums[i]!=0 and dfs(newnums+[nums[j]/nums[i]]):return Truereturn Falsereturn dfs(nums)
