1+ '''
2+ 输入一个含有八个数字的数组, 判断有没有可能把这把个数字分别放到正方体的八个顶点上
3+ 使得正方体上三组相对的面上四个顶点的和都相等
4+ '''
5+
6+ '''
7+ 这个问题其实就是字符串排列的一个衍生问题
8+ 输入一个数组, 生成这八个数字所有可能的排列, 对应到正方体的八个顶点上
9+ 检查是否满足题目要求即可
10+ '''
11+ class Solution :
12+ # 全排列出所有顶点组合
13+ def Permutation (self , pointArr ):
14+ if not len (pointArr ):
15+ return []
16+ if len (pointArr ) == 1 :
17+ return pointArr
18+ numList = pointArr
19+ numList .sort ()
20+ pStr = []
21+ for i in range (len (numList )):
22+ if i > 0 and numList [i ] == numList [i - 1 ]:
23+ continue
24+ temp = self .Permutation (numList [:i ] + numList [i + 1 :])
25+ if type (temp [0 ]) == int :
26+ for j in temp :
27+ pStr .append ([numList [i ]] + [j ])
28+ else :
29+ for j in temp :
30+ tempArr = [numList [i ]] + j
31+ pStr .append (tempArr )
32+ return pStr
33+ def compareSum (self , alist ):
34+ allAns = self .Permutation (alist )
35+ for tempList in allAns :
36+ sum1 = tempList [0 ] + tempList [1 ] + tempList [2 ] + tempList [3 ]
37+ sum2 = tempList [4 ] + tempList [5 ] + tempList [6 ] + tempList [7 ]
38+ sum3 = tempList [0 ] + tempList [2 ] + tempList [4 ] + tempList [6 ]
39+ sum4 = tempList [1 ] + tempList [3 ] + tempList [5 ] + tempList [7 ]
40+ sum5 = tempList [0 ] + tempList [1 ] + tempList [4 ] + tempList [5 ]
41+ sum6 = tempList [2 ] + tempList [3 ] + tempList [6 ] + tempList [7 ]
42+ if sum1 == sum2 and sum3 == sum4 and sum5 == sum6 :
43+ return True
44+ return False
45+ ss = [2 , 3 , 9 , 7 , 0 , 11 , 2 , 6 ]
46+ ss2 = [1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ]
47+ s = Solution ()
48+ print (s .compareSum (ss2 ))
0 commit comments