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

  • 相关阅读:
    vim tab转换成space
    vs计算项目代码总行数
    读取xml文件
    复选框全选、取消全选
    网页上用js禁用鼠标右键
    腾讯、微软、亚马逊测试站点
    限制文本域输入字符个数,即使显示输入字符数和剩余字符数,超出不显示!
    DataUtil
    DES加密解密类
    JsonHelper(Json帮助类)
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5426079.html
Copyright © 2011-2022 走看看