首先输入一个正整数N,接下来的一行共有N个正整数表示每个木棒的长度。
N ≤ 50, 木棒的长度 ≤ 10000.
输出一个整数表示方法数。
5 1 2 3 4 5
3
package main
import (
"fmt"
"sort"
)
func main() {
var arr []int
var count int
fmt.Scanln(&count)
if count < 3 {
fmt.Println(0)
return
}
for i := 0; i < count; i++ {
var num int
fmt.Scanf("%d", &num)
arr = append(arr, num)
}
sort.Ints(arr)
// 尺取
ans := 0
for i := 0; i < len(arr) - 2; i ++ {
l,r := i + 1, i + 2
for r < len(arr) {
if r == l {
r ++
continue
}
// 任意两边和大于另一个边
abL := arr[i] + arr[l]
if abL > arr[r] {
mostLessRight := r
for mostLessRight < len(arr) && arr[mostLessRight] < abL {
mostLessRight ++
}
ans += mostLessRight - r
l ++
}else {
l ++
}
}
}
fmt.Println(ans)
}