题解 | 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))

全部评论

相关推荐

01-04 07:53
门头沟学院 C++
心愿便利贴:工作了以后回头再看待这个问题,从客观的视角来讲是因为每个人对自己的要求不同,学习好的人对自己的要求很高,所以觉得考不好就天塌了,认为自己学习好并且值得一份好工作的人也是一样,找不到符合自己预期的工作肯定也会觉得是侮辱,牛客上有很多名校大学生,肯定会存在这种好学生心态啊,“做题区”从来都不是贬义词,这是大部分普通人赖以生存的路径,这个有什么好嘲讽的,有“好学生心态”没有错,但是不要给自己太大的压力了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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