题解 | #24点运算#
24点运算
https://www.nowcoder.com/practice/7e124483271e4c979a82eb2956544f9d
from itertools import permutations
def fun():
num = list(map(int, input().split(' ')))
def dfs(n, value, i):
if i == 3: # 当前列表已经递归完
return True if value == 24 else False # 当前递归计算的值是不是24
# 递归当前列表的每一种运算
if dfs(n, value + n[i + 1], i + 1) or dfs(n, value - n[i + 1], i + 1) or dfs(n, value * n[i + 1], i + 1) or dfs(n, value / n[i + 1], i + 1):
return True
elif i == 1 and (dfs(n, value * (n[i+1] + n[i+2]), i+2) or dfs(n, value * (n[i+1] - n[i+2]), i+2)): # 后两位是括号
return True
elif i == 1 and ((n[i+1] - n[i+2] != 0 and dfs(n, value / (n[i+1] - n[i+2]), i+2)) or dfs(n, value / (n[i+1] + n[i+2]), i+2)): # 后两位是括号
return True
return False
# 循环输入的4位数的排列
for _n in list(permutations(num)):
if dfs(_n, _n[0], 0): # 只要有一种满足则停止
print('true')
return
print('false')
fun()