【51Nod】1055 最长等差数列 动态规划

【题目】1055 最长等差数列
【题意】给定大小为n的互不不同正整数集合,求最长等差数列的长度。(n leq 10000)
【算法】动态规划
两个数之间的差是非常重要的信息,设(f_{i,j})表示以i和j开头的最长等差数列长度,初始化为2,那么:

$$f_{i,j}=f_{j,k}+1 , |A_i-A_j|=|A_j-A_k|$$

怎么快速找i,j,k?从后往前枚举j,然后双指针i和k向两边移动判断即可。
复杂度(O(n^2))
注意:这题卡时间和空间,f数组必须用short int来存储(2 Byte,32767)。

原文地址:https://www.cnblogs.com/onioncyc/p/9081001.html