首页 > 代码库 > 【wikioi1006】等差数列

【wikioi1006】等差数列

1006 等差数列 

题目描述 Description

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

输入描述 Input Description

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

输出描述 Output Description

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

样例输入 Sample Input

7

3

8

4

5

6

2

2

样例输出 Sample Output

5

思路 thinkings

      我似乎想了太多。。排序然后乱搞。。。100数据范围居然搞了一中午,我好弱啊

代码codes

#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;int main(){    int a[105];    int n,large;    cin>>n;     large=0;    for (int i=1;i<=n;i++) cin>>a[i];    sort(a+1,a+n+1);    if ((a[1]==a[n])) {cout<<n<<endl; return 0;}    for (int i=1;i<=n;i++)    {        for (int j=i+1;j<=n;j++)        {            int now=j;            int ans=2;            int gc=a[j]-a[i];            for (int k=j+1;k<=n;k++)            {                if ( (a[k]-a[now])==gc )                 {                    ans=ans+1;                    now=k;                }                if(a[k]-gc>a[now]) break;            }            large=max(large,ans);        }    }    cout<<large<<endl;    return 0;}

结果results

 

 

.

【wikioi1006】等差数列