这个代码可能不简洁,可是绝对简单易懂。
首先将序列nums排个序,而后取第一个first元素f,再取第二个second元素s,算出差d,那么咱们的下一个指望值就是nums[s]+d,遍历剩余的数组,碰到了指望就计数+1,指望值+d,继续遍历。
目前只想到了这样朴素的方法,若是你想到了什么奇技淫巧,不妨评论一下吧。app
package main import ( "fmt" "sort" ) func main() { var n,tp int var nums []int fmt.Scan(&n) for i:=0;i<n;i++{ fmt.Scan(&tp) nums= append(nums, tp) } if n<=2{ fmt.Println(n) return } sort.Ints(nums) max:=0 for f:=0;f<n;f++{ for s:=f+1;s<n;s++{ cnt:=2 d:=nums[s]-nums[f] exp:=nums[s]+d for k:=s+1;k<n;k++{ if nums[k]==exp{ cnt++ exp+=d } } if cnt>max{ max=cnt } } } fmt.Println(max) }