最长等差数列问题 Golang 暴力法

集合划分问题 Golang 动态规划 01背包web

最长等差数列问题 Golang 暴力法

字母组合 Golang
验证IP地址 Golang数组

这个代码可能不简洁,可是绝对简单易懂。
首先将序列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)
}