题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
nums = list(map(int, input().split())) nums.sort() def dfs(nums): #只能遍历2个数字之间的元素,开头和末尾均无符号 if len(nums) == 1:#只有一个数字的时候 即递归到最后一个元素 return nums[0] == 24 for i in range(len(nums)): for j in range(len(nums)): if i != j: new_nums = [nums[k] for k in range(len(nums)) if k != i and k != j] #i和j不能相同 # 加法 if dfs(new_nums + [nums[i] + nums[j]]): return True # 减法 if dfs(new_nums + [nums[i] - nums[j]]): return True # 乘法 if dfs(new_nums + [nums[i] * nums[j]]): return True # 除法 #被除数不为空 if nums[j] != 0 and dfs(new_nums + [nums[i] / nums[j]]): return True return False if dfs(nums): print("true") else: print("false")