题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
def kk(a): n = len(a) if n == 1: if abs(a[0] - 24) < 1e-6: #因为除法的存在 用abs() < 1e-6判断两数相等是很有必要的 不然8/(3-8/3) 不通过 return True return False for i in range(n - 1): for j in range(i + 1, n): li = [] for k in range(n): if k != i and k != j: li.append(a[k]) if kk(li + [a[i] * a[j]]): return True if kk(li + [a[i] + a[j]]): return True if kk(li + [a[i] - a[j]]): return True if kk(li + [a[j] - a[i]]): return True if abs(a[i]) > 1e-6: if kk(li + [a[j] / a[i]]): return True if abs(a[j]) > 1e-6: if kk(li + [a[i] / a[j]]): return True return False while True: try: a = list(map(int, input().split())) print("true" if kk(a) else "false") except: break