题解 | 24点游戏算法

def calculate24(nums):
    # 如果只剩一个数字,检查是否等于24
    if len(nums) == 1:
        return abs(nums[0] - 24) < 0.0001
    
    # 遍历所有可能的数字对组合
    for i in range(len(nums)):
        for j in range(i + 1, len(nums)):
            num1, num2 = nums[i], nums[j]
            # 创建剩余数字列表
            remaining = nums[:i] + nums[i+1:j] + nums[j+1:]
            
            # 尝试所有可能的运算
            # 加法
            if calculate24(remaining + [num1 + num2]):
                return True
            # 减法(两种顺序都要尝试)
            if calculate24(remaining + [num1 - num2]):
                return True
            if calculate24(remaining + [num2 - num1]):
                return True
            # 乘法
            if calculate24(remaining + [num1 * num2]):
                return True
            # 除法(注意除数不能为0)
            if num2 != 0 and calculate24(remaining + [num1 / num2]):
                return True
            if num1 != 0 and calculate24(remaining + [num2 / num1]):
                return True
    
    return False


numbers = list(map(int, input().split()))
   

# 输出结果
if calculate24(numbers) == True:
    print("true")
elif calculate24(numbers) == False:
    print("false")
#print(calculate24(numbers))

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务