【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)。

posted @ 2018-05-24 08:51  ONION_CYC  阅读(540)  评论(0编辑  收藏  举报