# 7*2+1*10=24 ''' # 暴力遍历:过程繁琐,容易遗漏 # 数字的全排序:递归函数 def full_arrangement(num): if len(num)==1: return [num] else: result=[] for i in range(len(num)): rest_num=num[:i]+num[i+1:] # i之前的元素 + i之后的元素 # 剩余字母的全排列 for j in full_arrangement(rest_num): result.append([num[i]]+j) # i元素与剩余元素各种排列组合在一起 return result # +-*/ 四个符号中任选一个,选(n-1)次(n个数字有n-1个位置放符号) def symbol_combain(n): symbol=['+','-','*','/'] if n==1: result=[['+'],['-'],['*'],['/']] else: result=[] for i in symbol: for j in symbol_combain(n-1): result.append(j+[i]) return result n=input().split() # 先去重 n_l=[] for i in n: if i not in n_l: n_l.append(i) #print(n_l) arrangements=full_arrangement(n_l) #print(arrangements) sym=symbol_combain(len(n_l)-1) #print(sym,len(sym)) answer=[] # 记录得数 for i in arrangements: for j in sym: merge='' for k in range(len(j)): merge += i[k]+j[k] merge += i[-1] formule=int(eval(merge)) answer.append(formule) print(merge,formule,answer) if '+' in j or '-' in j: # 括号情形 if '*' in j or '/' in j: merge[] if formule==24: print('true') break else: print('false') ''' ''' 3 9 3 4 (9-3)*4=24 true 没考虑括号时,输出false(错误) ''' # bfs 深度优先搜索:一条路径走到底后需要返回上一步(父节点),搜索第二条路径 # 可用递归函数 ''' def calculate(arr,n): # 返回true/false if len(arr)==1: return arr[0]==n else: for i in range(len(arr)): n1=arr[i] rest_n=arr[:i]+arr[i+1:] if calculate(rest_n,n+n1) or calculate(rest_n,n-n1) or calculate(rest_n,n*n1) or calculate(rest_n,n/n1): return True else: return False #if条件依次代表:f(rest_n)-n1=n 减法 #f(rest_n)+n1=n 加法 #f(rest_n)/n1=n 除法 #f(rest_n)*n1=n 乘法 while 1: try: n=list(map(int,input().split())) # 数字可以重复,不用去重 if calculate(n,24): print('true') else: print('false') except: break ''' import itertools def fun(arr, y): # 前面的结果与后一个数加减乘除的可能 res = [] for x in arr: res.append(x) # x y 自身必须放进结果列表, res.append(y) res.append(x + y) res.append(x - y) res.append(x * y) if y==0: continue res.append(x / y) # 如果y==0,会导致程序异常退出,此时跳过除法,继续循环 return res while 1: try: num_list = [int(i) for i in input().split()] #print(num_list) # 所有数字排列的顺序都考虑进去 for i in range(len(list(itertools.permutations(num_list)))): a, b, c, d = list(itertools.permutations(num_list))[i] #print(a,b,c,d) list1 = fun([a], b) list2 = fun(list1, c) list3 = fun(list2, d) list4 = fun([a],b) # 前两个数运算 list5 = fun([c],d) # 后两个数运算 list7=[] for j in list5: list6=fun(list4,j) # 前两数结果挨个与后两个结果运算 list7.extend(list6) #print(list7) if 24 in list3 or 24 in list7: print('true') break else: print('false') except: break