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

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

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

字母组合 Golang
验证IP地址 Golang

这个代码可能不简洁,但是绝对简单易懂。
首先将序列nums排个序,然后取第一个first元素f,再取第二个second元素s,算出差d,那么我们的下一个期望值就是nums[s]+d,遍历剩余的数组,碰到了期望就计数+1,期望值+d,继续遍历。
目前只想到了这样朴素的方法,如果你想到了什么奇技淫巧,不妨评论一下吧。

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)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值