OJ——39. 24点游戏

大家都玩过扑克牌(A,2,3…T,J,Q,K),我们使用T来表示10,且A取值1,J取值11,Q取值12,K取值13,你的任务是判断给定四张牌,能否通过加减乘除四种运算,使得最后的结果是24。
若四张牌为A、5、8、J,则可以这么计算5+J+(A*8)=24。

解答要求时间限制:5000ms, 内存限制:64MB

输入

输入四个字符表示四张牌(A,2,3…T,J,Q,K),用空格隔开。输入到文件末尾结束。

输出

若能计算出24,输出"Yes”,否则输出"No"。

样例

输入样例 1 复制

A 5 5 5
A A A A

输出样例 1

Yes
No

 

解题思路:

开始看到这个题目的时候,很自然的想到了将所有的情况都进行考虑然后将一些明显不符合的情况删除从而进行剪枝,但是这样还是比较复杂。后来看到了别人好的思路,从输入中随机选择两个数据进行加减乘除运算然后将结果和剩余的数一起再次计算,通过不断的递归最后得出结果。AC的Python代码如下:

def func():
    dic = {'A': 1, 'T': 10, 'J': 11, 'Q': 12, 'K': 13}
    while True:
        try:
            data = list(map(str, input().strip().split()))
            for i in range(len(data)):
                if dic.get(data[i]):
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值