题目:
你有 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 False
def dfs(nums):
n=len(nums)
if n==1: return abs(nums[0]-24)<1e-6
for 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 True
if dfs(newnums+[nums[i]-nums[j]]):return True
if dfs(newnums+[nums[i]*nums[j]]):return True
if dfs(newnums+[nums[j]-nums[i]]):return True
if nums[j]!=0 and dfs(newnums+[nums[i]/nums[j]]):return True
if nums[i]!=0 and dfs(newnums+[nums[j]/nums[i]]):return True
return False
return dfs(nums)