Python正方体对面和相同

本文阅读 1 分钟
首页 Python笔记 正文

输入一个含有八个数字的数组, 判断有没有可能把这把个数字分别放到正方体的八个顶点上
使得正方体上三组相对的面上四个顶点的和都相等

这个问题其实就是字符串排列的一个衍生问题
输入一个数组, 生成这八个数字所有可能的排列, 对应到正方体的八个顶点上
检查是否满足题目要求即可

class Solution:
    # 全排列出所有顶点组合
    def Permutation(self, pointArr):
        if not len(pointArr):
            return []
        if len(pointArr) == 1:
            return pointArr
        numList = pointArr
        numList.sort()
        pStr = []
        for i in range(len(numList)):
            if i > 0 and numList[i] == numList[i-1]:
                continue
            temp = self.Permutation(numList[:i] + numList[i+1:])
            if type(temp[0]) == int:
                for j in temp:
                    pStr.append([numList[i]] + [j])
            else:
                for j in temp:
                    tempArr = [numList[i]] + j
                    pStr.append(tempArr)
        return pStr
    def compareSum(self, alist):
        allAns = self.Permutation(alist)
        for tempList in allAns:
            sum1 = tempList[0] + tempList[1] + tempList[2] + tempList[3]
            sum2 = tempList[4] + tempList[5] + tempList[6] + tempList[7]
            sum3 = tempList[0] + tempList[2] + tempList[4] + tempList[6]
            sum4 = tempList[1] + tempList[3] + tempList[5] + tempList[7]
            sum5 = tempList[0] + tempList[1] + tempList[4] + tempList[5]
            sum6 = tempList[2] + tempList[3] + tempList[6] + tempList[7]
            if sum1 == sum2 and sum3 == sum4 and sum5 == sum6:
                return True
        return False
ss = [2, 3, 9, 7, 0, 11, 2, 6]
ss2 = [1, 1, 1, 1, 1, 1, 1, 1]
s = Solution()
print(s.compareSum(ss2))
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

Python格雷码
« 上一篇 01-21
Python转换字符串格式
下一篇 » 01-21

发表评论