标题:纸牌三角形
A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等。
下图就是一种排法(如有对齐问题,参看p1.png)。
A 9 6 4 8 3 7 5 2
这样的排法可能会有很多。
如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?
请你计算并提交该数字。
注意:需要提交的是一个整数,不要提交任何多余内容。
答案:144
**思路:**建立一个列表,列表下标0~3、 3~6、 6~0 的和相等
这里用到全排列
之后在排除 旋转/3 镜像/2
count = 0
def swap(a,b,nums):
temp = nums[a]
nums[a] = nums[b]
nums[b] = temp
def qpl(nums,f,l):
global count
if f==l:
if nums[0]+nums[1]+nums[2]+nums[3] ==nums[3]+nums[4]+nums[5]+nums[6]==nums[6]+nums[7]+nums[8]+nums[0]:
count+=1
print(count/3/2)
for i in range (f,l+1):
swap(i,f,nums)
qpl(nums,f+1,l)
swap(i,f,nums)
qpl([1,2,3,4,5,6,7,8,9],0,8)