? 67 24點遊戲演算法

2021-09-10 06:00:25 字數 1834 閱讀 6537

題目描述

問題描述:給出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 ...