zoukankan      html  css  js  c++  java
  • 找最长等差数列的长度

    题目描述:给定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

  • 相关阅读:
    HTTP协议 学习笔记一
    web发展历史
    Easydarwin加FFMPEG实现HLS流视频点播
    C# Socket异步实现消息发送--附带源码
    C# Activex调用USB摄像头--附带源码
    C# listbox DataSource数据绑定--一年半以前的bug
    ASP.NET MVC WebAPI实现文件批量上传
    ASP.NET MVC使用SignalR统计在线用户人数
    Chart.js Y轴数据以百分比展示
    Java获取字符串信息
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5426079.html
Copyright © 2011-2022 走看看