给定一个正整数列表,找到我们可以形成的三角形数量,以使三角形的边长由输入列表的三个不同条目表示。
(灵感来自CR。)
细节
- 如果三个边长a ,b ,c的所有排列都满足严格的三角形不等式a + b > c ,则可以形成三角形。(这意味着a + b > c,和必须全部成立。)
- 三个边长必须出现在列表中的不同位置,但不一定必须成对地分开。
- 输入列表中三个数字的顺序无关紧要。如果我们考虑一个列表
a
和三个数字a[i], a[j], a[k]
(i,j,k
两两互不相同),那么(a[i],a[j],a[k]), (a[i],a[k],a[j]), (a[j], a[i], a[k])
等等都被视为同一个三角形。 - 可以假定输入列表至少包含3个条目。
- 您可以假定输入列表按升序排序。
例子
Input, Output:
[1,2,3] 0
[1,1,1] 1
[1,1,1,1] 4
[1,2,3,4] 1
[3,4,5,7] 3
[1,42,69,666,1000000] 0
[12,23,34,45,56,67,78,89] 34
[1,2,3,4,5,6,7,8,9,10] 50
输入的[1,2,3,...,n-1,n]
是A002623。
输入的[1,1,...,1]
(length n
)为A000292。
[1,1,1,1]
可以[1,1,1]
使用1中的任意三个来选择4个“不同”的三角形,全部?但是,它不是24,因为三个1的选择是无序的,即它是三个索引的子集而不是有序列表吗?