首页 > 代码库 > codevs 1006 等差数列

codevs 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

 

分析:

水题。。。排序+枚举即可。

 

#include<iostream>
#include<algorithm>
using namespace std;
int a[110],ans=1;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;++i)cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=1;i<=n;++i)
    {
        for(int j=i+1;j<=n;++j)
        {
            int t=1;
            int m=a[j]-a[i],l=i;
            for(int k=i+1;k<=n;++k)
            {
                if(a[k]-a[l]==m)
                {
                    ++t;
                    l=k;
                }
            }
            ans=max(t,ans);
        }
    }
    cout<<ans;
    return 0;
    
}

 

 

 

 

codevs 1006 等差数列