程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> LIS 最長遞增子序列 Java的簡略完成

LIS 最長遞增子序列 Java的簡略完成

編輯:關於JAVA

LIS 最長遞增子序列 Java的簡略完成。本站提示廣大學習愛好者:(LIS 最長遞增子序列 Java的簡略完成)文章只能為提供參考,不一定能成為您想要的結果。以下是LIS 最長遞增子序列 Java的簡略完成正文


明天碰到了一個求最長遞增子序列的成績,看了以後就測驗考試著用Java完成了一下,關於甚麼是最長遞增子序列,這裡就不在贅述,可以百度或許Google之,以下為完成的代碼:

解釋:本段代碼完成的功效為

(1)隨機生成一個有10個元素的數組,然後輸入它的最長遞增子序列
(2)輸入以個中某一個元素為開頭的最長遞增子序列的長度

詳細的完成思緒在正文中曾經具體注解了,比擬簡略,這裡就不再贅述

import java.util.Arrays;
import java.util.Random;

public class LIS {

  public static void main(String[] args){
    System.out.println("generating a random array...");
    LIS lis=new LIS();
    int[] oldArray=lis.randomArray();
    for (int i = 0; i < oldArray.length; i++) {
      System.out.print(oldArray[i]+" ");
    }

    System.out.println();
    System.out.println("最長遞增子序列的長度為");
    lis.lisGet(oldArray);

  }

  public int[] randomArray(){
    Random random=new Random();
    int[] randomArray=new int[10];
    for (int i = 0; i < 10; i++) {
      randomArray[i]=random.nextInt(10);
    }
    return randomArray;
  }

  public void lisGet(int[] arrayL ){

    int[] lisLength=new int[arrayL.length];//用於記載以後個元素作為最年夜元素的最長遞增序列的長度

    for (int i = 0; i < arrayL.length; i++) { //初始化
      lisLength[i]=1;
    }

    int max=1;

    for (int i = 1; i < arrayL.length; i++) {
      for (int j = 0; j <i; j++) {

        if (arrayL[j]<arrayL[i]&&(lisLength[j]+1)>lisLength[i]) {          
          lisLength[i]=lisLength[j]+1;
        }

        if (max<lisLength[i]) { //獲得以後最長遞增序列的長度和該子序列的最末元素的地位
          max=lisLength[i];
        }      
      }

    }

    System.out.println(max);

    System.out.println("第i個元素開頭時最長遞增子序列:"+Arrays.toString(lisLength)); //輸入數組
  }

}

以上就是小編為年夜家帶來的LIS 最長遞增子序列 Java的簡略完成的全體內容了,願望對年夜家有所贊助,多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved