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])

你可能感兴趣的:(24Game——python2实现)