题目描述
问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字]
输出:
true or false
输入描述:
输入4个int整数
输出描述:
返回能否得到24点,能输出true,不能输出false
示例1
输入
7 2 1 10
输出
true
def DFS(result,array):
if len(array)==1 and array[0]==result:
return True
elif len(array)>1:
for i in range(len(array)):
currentnum=array[i]
leftarray=array[:]
leftarray.remove(currentnum)
if DFS(result-currentnum,leftarray) or DFS(result+currentnum,leftarray) or DFS(result*currentnum,leftarray) or DFS(result/currentnum,leftarray):
return True
else:
return False
while True:
try:
numarray=list(map(int,input().split()))
if len(numarray)!=4:
print('false')
else:
if DFS(24,numarray):
print('true')
else:
print('false')
except:
break
from itertools import permutations
def DFS(index,currentnum,array):
if currentnum==24:
return True
else:
if currentnum>24 or index>=4:
return False
else:
return DFS(index+1,currentnum+array[index],array) or DFS(index+1,currentnum-array[index],array) or DFS(index+1,currentnum*array[index],array) or DFS(index+1,currentnum/array[index],array)
#遍历从第一个数开始对后面的数分别进行加减乘除运算,直到得到24或超出索引
while True:
try:
numarray=list(map(int,input().split()))
# print(numarray)将输入的数字变成列表
flag=False
# print(list(permutations(numarray)))
for each in permutations(numarray):#对列表进行排列,不同的加减乘除运算
if DFS(1,each[0],each):
print('true')
flag=True
break
if not flag:
print('false')
except:
break