找最长等差数列的长度

题目描述:给定n(1<=n<=100)个数,从中找出尽可能多的数,使得他们能够组成一个等差数列.求最长的等差数列的长度,每个数的绝对值不超过10000000.

样例:

        输入数组为:2,8,3,5,6,4

        输出为:5

Java代码实现:

 1 import java.util.*;
 2 public class Main {
 3     public static int maxlength(int a[]){
 4         int n=a.length;
 5         int large=0;                      //记录最大长度
 6         Arrays.sort(a);                   //将数组排序
 7         if ((a[0]==a[n-1]))  return n;    //如果最小值和最大值相等,说明整个序列是公差为0的等差序列,直接返回总长度
 8                                    
 9         for (int i=0;i<n;i++)             //从头开始枚举
10         {
11             for (int j=i+1;j<n;j++)
12             {
13                 int now=j;
14                 int ans=2;               //存储本次最长等差序列
15                 int gc=a[j]-a[i];        //存储公差
16                 for (int k=j+1;k<n;k++)
17                 {
18                     if ( (a[k]-a[now])==gc) 
19                     {
20                         ans=ans+1;
21                         now=k;
22                     }
23                     if(a[k]-gc>a[now]) break;   //如果连续两项的差大于公差,结束本次查找
24                 }
25                 if(large<ans)large=ans;         //更新本次最长长度
26             }
27         }
28         return large;                          //返回最长等差序列长度
29     }
30     
31     public static void main(String[] args) {
32         int[] a={2,8,3,5,6,4};
33         System.out.print("整数序列为:");
34         for(int i=0;i<a.length;i++)
35             System.out.print(a[i]);
36         System.out.println();
37         System.out.println("最长等差数列长度为:"+maxlength(a));
38     }
39 
40 }
View Code

输出结果为:

整数序列为:283564
最长等差数列长度为:5

转载于:https://www.cnblogs.com/guozhenqiang/p/5426079.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值