24Game——python2实现

题目:你有4张卡片,上面是1-9的任意数字,要求通过任意“+、-、*、/”和括号运算,判断能否使得4张卡片数字运算结果为24。

例:input:   [4,1,8,7]

       output:True

      Explanation:(8-4)*(7-1)=24

分析:每次运算都是2个数字进行加减乘除,运算1次后剩下3个数,再选2个数进行加减乘除,直至最终结果,与24进行比较。采用递归方法解决。可以解决n个数的判断问题。

代码如下:

import itertools

class Solution(object):

    def judgePoint24(self, nums):
        """
        :type nums: List[int]
        :rtype: bool
        """
        if len(nums) == 1:
            return abs(nums[0]-24)<0.1
        return any(self.judgePoint24([x] + list(lst[2:]))
                   for lst in itertools.permutations(nums)
                   for x in {lst[0]+lst[1], lst[0]-lst[1], lst[0]*lst[1]*1.0,
                             lst[1] and lst[0]*1.0/lst[1]})
s=Solution()
print s.judgePoint24([3,3,8,8])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值