当前位置:首页 » 《随便一记》 » 正文

【牛客网华为机试】HJ67 24点游戏算法_202xxx的博客

4 人参与  2022年01月12日 12:17  分类 : 《随便一记》  评论

点击全文阅读


题目

描述

问题描述:给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利
输入:
4个1-10的数字。[数字允许重复,但每个数字仅允许使用一次,测试用例保证无异常数字。
输出:

true or false

本题含有多组样例输入。

输入描述:

输入4个int整数

输出描述:

返回能否得到24点,能输出true,不能输出false

示例1

输入:

7 2 1 10

输出:

true

解题思路

(1)用递归算法进行求解

(2)每次取出列表中的第一个元素,设置目标值为24,用24对其进行加减乘除

(3)最后一层为为只剩最后一个元素

(4)只需要满足其中一条路径为24,则输出True,全部不满足则输出False

代码

def func(data, tar):
    if len(data)==1:
        return data[0]==tar
    else:
        for i in range(len(data)):
            data = data[1:] + [data[0]]
            if func(data[1:], tar+data[0]) or func(data[1:], tar-data[0]) or func(data[1:], tar*data[0]) or func(data[1:], tar/data[0]):
                return True
        return False
    
while True:
    try:
        data = list(map(int, input().split()))
        n = len(data)
        print(str(func(data, 24)).lower())
    except Exception as e:
        break
            

Reference

华为机试题库_在线编程+题解_牛客题霸_牛客网


点击全文阅读


本文链接:http://zhangshiyu.com/post/33099.html

输出  数字  输入  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1