题解 | #24点游戏算法#
24点游戏算法
https://www.nowcoder.com/practice/fbc417f314f745b1978fc751a54ac8cb
la = ['+', '-', '*', '/'] lb = input().split() # lb = ['1', '1', '5', '7'] ra = [] # 获取所有运算符的排列 for i in la: for j in la: for k in la: ra.append([i, j, k]) rb = [] # 获取所有数字的排列 for a in range(4): for b in range(4): if b == a: continue for c in range(4): if c == b or c == a: continue for d in range(4): if d == a or d == b or d == c: continue l = [lb[a], lb[b], lb[c], lb[d]] if l not in rb: # 去除存在相同数字产生的重复列 rb.append(l) # for _ in ra: # print(_) # print('='*50) # for _ in rb: # print(_) def judge(ra, rb): for i in rb: for j in ra: # 对括号运算进行处理 rs0 = "{}{}{}{}{}{}{}".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs1 = "({}{}{}{}{}){}{}".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs2 = "{}{}({}{}{}{}{})".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs3 = "({}{}{}){}{}{}{}".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs4 = "{}{}({}{}{}){}{}".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs5 = "{}{}{}{}({}{}{})".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs6 = "({}{}{}){}({}{}{})".format(i[0], j[0], i[1], j[1], i[2], j[2], i[3]) rs = [rs0, rs1, rs2, rs3, rs4, rs5, rs6] for r in rs: try: if eval(r) == 24.0: return True except ZeroDivisionError as e: continue return False if judge(ra, rb): print('true') else: print('false')