1,题目描述
2,题目分析
DP, dp[i][j]表示以A[i] 和A[j]为结尾的子序列的长度
3,代码实现
class Solution {
public:
int lenLongestFibSubseq(vector<int>& A) {
int len= A.size();
int dp[len][len];
unordered_map<int,int> map;
for(int i=0; i<len; i++)
map[A[i]]=i;
int ans=0;
for (int j=1; j<len; j++)
for (int i=0; i<j; i++){
dp[i][j]=2;
if ( A[j]-A[i]<A[i] && map.find(A[j]-A[i])!=map.end() ){
int k=map[A[j]-A[i]];
dp[i][j]=max(dp[i][j], 1+dp[k][i]);
}
ans=max(ans, dp[i][j]);
}
return (ans>2)? ans: 0;
}
};