题解:等差数列Pascal

等差数列

时间限制: 1 Sec  内存限制: 128 MB

题目描述

给定n(1<=n<=400)个数,从中找出尽可能多的数使得他们能够组成一个等差数列.求最长的等差数列的长度.

 

输入

第一行是一个整数n,接下来一行包括了n个数,每个数的绝对值不超过10000000.

 

输出

对于每个输入数据,输出你所找出的最长等差数列的长度

 

样例输入

7
3
8
4
5
6
2
2

样例输出

5

参考题解

var
  i,j,n,max:longint;
  a:array[0..500]of longint;
{此代码为原作者Yemaster所有}
procedure find(k,s,t:longint);
var
  i:longint;
begin
  if (t>max) then max:=t;
  for i:=k+1 to n do
  if a[i]-a[k]=s then find(i,s,t+1);
end;
{此代码为原作者Yemaster所有}
procedure qsort(l,r:longint);
var i,j,mid,t:longint;
begin
{此代码为原作者Yemaster所有}
  i:=l; 
  j:=r; 
  mid:=a[(i+j)div 2];
{此代码为原作者Yemaster所有}
  repeat
    while a[i]mid do dec(j);
    if i<=j then
    begin
      t:=a[i]; 
      a[i]:=a[j]; 
      a[j]:=t;
      inc(i); 
      dec(j); 
    end;
    until i>j;
{此代码为原作者Yemaster所有}
    if i 
  

转载于:https://my.oschina.net/u/3233411/blog/828622

你可能感兴趣的:(题解:等差数列Pascal)