題目描述
問題描述:給出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
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...
24點遊戲的演算法
給定4個數字計算24 public class core string output s.getexpression for int i 0 i output.length i 設定被計算的四個數,由於是陣列,所以具有容錯功能 不為4個數 public void setnumbers double ...