- def getAll(targetSum):
- ## 三种情况:
- ## 1.a+a+a = targetSum
- ## 2.a+b+b = targetSum
- ## 3.a+b+c = targetSum
- result = []
- if (targetSum//3) * 3 == targetSum:
- result.append((targetSum//3,targetSum//3,targetSum//3))
- for i in range(1,targetSum-1):
- if ((targetSum-i)//2) * 2 == targetSum - i:
- result.append((i, (targetSum-i)//2,(targetSum-i)//2))
- for i in range(1, targetSum):
- for j in range(1, targetSum):
- for k in range(1, targetSum):
- if i<j<k and i+j+k == targetSum:
- result.append((i,j,k))
- return result
- s = getAll(20)
- print('共有{}种不重复的组合。'.format(len(s)))
- for i in s:
- print(i)
- ## 共有33种不重复的组合。
- ## (2, 9, 9)
- ## (4, 8, 8)
- ## (6, 7, 7)
- ## (8, 6, 6)
- ## (10, 5, 5)
- ## (12, 4, 4)
- ## (14, 3, 3)
- ## (16, 2, 2)
- ## (18, 1, 1)
- ## (1, 2, 17)
- ## (1, 3, 16)
- ## (1, 4, 15)
- ## (1, 5, 14)
- ## (1, 6, 13)
- ## (1, 7, 12)
- ## (1, 8, 11)
- ## (1, 9, 10)
- ## (2, 3, 15)
- ## (2, 4, 14)
- ## (2, 5, 13)
- ## (2, 6, 12)
- ## (2, 7, 11)
- ## (2, 8, 10)
- ## (3, 4, 13)
- ## (3, 5, 12)
- ## (3, 6, 11)
- ## (3, 7, 10)
- ## (3, 8, 9)
- ## (4, 5, 11)
- ## (4, 6, 10)
- ## (4, 7, 9)
- ## (5, 6, 9)
- ## (5, 7, 8)
复制代码 |