1、暴力法
枚举所有可能的情况,计算每一种斐波那契数列的长度,取最大值。
// 暴力法(不好实施)
public int lenLongestFibSubseq(int[] A)
{
int a, b, aa;
int longest = 0;
int len = 2; // 当前斐波那契子序列的长度
for (int i=0; i<A.length; i++)
{
a = A[i];
for (int j=i+1; j<A.length; j++)
{
b = A[j];
len = 2;
for (int k=j+1; k<A.length; k++)
{
if (a + b > A[A.length-1])
break;
// 满足约束条件
if (a + b == A[k])
{
a = b;
b = A[k];
len++;
}
}
a = A[i]; // 这里很关键,必须恢复a
longest = Math.max(longest, len);
}
}
return longest < 3? 0: longest;
}