最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用java實(shí)現(xiàn)LIS算法,出操隊(duì)形的問題

 更新時(shí)間:2016年09月20日 07:20:45   投稿:jingxian  
下面小編就為大家?guī)硪黄褂胘ava實(shí)現(xiàn)LIS算法,出操隊(duì)形的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

假設(shè)有序列:2,1,3,5,求一個(gè)最長上升子序列就是2,3,5或者1,3,5,長度都為3。

LIS算法的思想是:

設(shè)存在序列a。

① 如果只有一個(gè)元素,那么最長上升子序列的長度為1;

② 如果有兩個(gè)元素,那么如果a[1]>a[0],則最長上升子序列的長度為2,a[1]為該最長上升子序列的最后一個(gè)元素;若a[1]<a[0],則最長上升子序列的長度為1,a[0]和a[1]均為  其最長上升子序列的最后一個(gè)元素。

③ 如果由三個(gè)元素,那么如果a[2]>a[0],a[2]>a[1],則a[2]可以作為a[0]或者a[1]所在最長上升子序列的最后一個(gè)元素。那選擇哪一個(gè)序列就要看a[0],a[1]哪個(gè)所在的序列要更長。

④ 擴(kuò)展到n個(gè)元素,就是看以a[n]為最后一個(gè)元素的最長上升子序列的長度是多少。

定義兩個(gè)數(shù)組,一個(gè)是a,一個(gè)是b。

a存放原始數(shù)據(jù),b[i]存放的是以a[i]結(jié)尾的最長上升子序列的長度。

代碼如下:

class Lmax{
   
  public static void Lmax(int[] a,int[] b){
     
    b[0]=1;             
         
    for(int i=1;i<a.length;i++){
      int countmax=0;
      for(int j=0;j<i;j++){
        if(a[i]>a[j]&&b[j]>countmax){ 
          countmax=b[j];   //記錄下元素?cái)?shù)值比a[i]小的但是對應(yīng)子序列最長的子序列長度
        }
      }
       
      b[i]=countmax+1;     //a[i]對應(yīng)的最長子序列長度是
    }
         
  }
   
}

二、出操隊(duì)形

題目描述:

在 讀高中的時(shí)候,每天早上學(xué)校都要組織全校的師生進(jìn)行跑步來鍛煉身體,每當(dāng)出操令吹響時(shí),大家就開始往樓下跑了,然后身高矮的排在隊(duì)伍的前面,身高較高的就 要排在隊(duì)尾。突然,有一天出操負(fù)責(zé)人想了一個(gè)主意,想要變換一下隊(duì)形,就是當(dāng)大家都從樓上跑下來后,所有的學(xué)生都隨機(jī)地占在一排,然后出操負(fù)責(zé)人從隊(duì)伍中 抽取出一部分學(xué)生,使得隊(duì)伍中剩余的學(xué)生的身高從前往后看,是一個(gè)先升高后下降的“山峰”形狀。據(jù)說這樣的形狀能夠給大家?guī)砗眠\(yùn),祝愿大家在學(xué)習(xí)的道路 上勇攀高峰。(注,山峰只有一邊也符合條件,如1,1、2,2、1均符合條件)

輸入:

輸入可能包含多個(gè)測試樣例。
對于每個(gè)測試案例,輸入的第一行是一個(gè)整數(shù)n(1<=n<=1000000):代表將要輸入的學(xué)生個(gè)數(shù)。
輸入的第二行包括n個(gè)整數(shù):代表學(xué)生的身高(cm)(身高為不高于200的正整數(shù))。

輸出:

對應(yīng)每個(gè)測試案例,輸出需要抽出的最少學(xué)生人數(shù)。

樣例輸入:

6

100 154 167 159 132 105

5

152 152 152 152 152

樣例輸出:

0

4

在用LIS來解這道題的時(shí)候,可以這樣考慮:

首先從前向后用LIS求一遍以每一個(gè)元素結(jié)尾的最長上升子序列的長度,然后將數(shù)組逆序,再用LIS求一遍以每一個(gè)元素結(jié)尾的最長上升子序列的長度。

得到兩個(gè)數(shù)組b1,b2。

b1,b2對應(yīng)相加再減去重復(fù)的一個(gè),就是最長的'山峰'。

public class peak {
   
  public static void main (String[] args)
  {
    int n; 
    int re;
    do{
      Scanner in = new Scanner(System.in);
      n = in.nextInt();
    }while(n<0||n>100000);
     
    int []a = new int[n];           //原始數(shù)組
    int []ar = new int[n];          //逆序數(shù)組
    Scanner in = new Scanner(System.in);
     
    for(int i=0;i<n;i++){
      a[i]=in.nextInt();
    }     
    int[] b1 = new int[n];
    @SuppressWarnings("unused")
    int[] b2 = new int[n];
    Lmax.Lmax(a, b1);
    ar=reverse.reverse(a);     
 
    Lmax.Lmax(ar, b2);       //求解逆序數(shù)組的最長上升子序列
 
    b2=reverse.reverse(b2);     //將逆序數(shù)組的最長上升子序列逆序以便和原始數(shù)組的最長上升子序列對應(yīng)相加
     
    re = result.result(b1, b2);
    System.out.print(re);
  }
 
}<br><br><br><br>
class result{
  public static int result(int[] a,int[] b){
    int max=0;
    int[] c = new int[a.length];
    for(int i=0;i<a.length;i++){
      c[i]=a[i]+b[i];
    }
    Arrays.sort(c);
    max=c[c.length-1]-1;    //對應(yīng)相加最長的再減去重復(fù)的一個(gè)人
    return a.length-max;
  }
}

以上就是小編為大家?guī)淼氖褂胘ava實(shí)現(xiàn)LIS算法,出操隊(duì)形的問題的全部內(nèi)容了,希望對大家有所幫助,多多支持腳本之家~

相關(guān)文章

  • Java后端實(shí)現(xiàn)異步編程的9種方式總結(jié)

    Java后端實(shí)現(xiàn)異步編程的9種方式總結(jié)

    我們?nèi)粘i_發(fā)的時(shí)候,經(jīng)常說到異步編程,比如說,在注冊接口,我們在用戶注冊成功時(shí),用異步發(fā)送郵件通知用戶,那么實(shí)現(xiàn)異步編程一共有多少種方式呢,下面小編就來簡單講講吧
    2025-03-03
  • Java靜態(tài)泛型使用方法實(shí)例解析

    Java靜態(tài)泛型使用方法實(shí)例解析

    這篇文章主要介紹了Java靜態(tài)泛型使用方法實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中IO流文件讀取、寫入和復(fù)制的實(shí)例

    Java中IO流文件讀取、寫入和復(fù)制的實(shí)例

    下面小編就為大家?guī)硪黄狫ava中IO流文件讀取、寫入和復(fù)制的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案

    Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案

    今天小編就為大家分享一篇關(guān)于Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • spring boot測試打包部署的方法

    spring boot測試打包部署的方法

    spring boot項(xiàng)目如何測試,如何部署,在生產(chǎn)中有什么好的部署方案嗎?這篇文章就來介紹一下spring boot 如何開發(fā)、調(diào)試、打包到最后的投產(chǎn)上線,感興趣的朋友一起看看吧
    2018-01-01
  • Java 發(fā)送http請求上傳文件功能實(shí)例

    Java 發(fā)送http請求上傳文件功能實(shí)例

    本文通過實(shí)例代碼給大家介紹了Java 發(fā)送http請求上傳文件功能,需要的朋友參考下吧
    2017-06-06
  • Java將對象保存到文件中/從文件中讀取對象的方法

    Java將對象保存到文件中/從文件中讀取對象的方法

    下面小編就為大家?guī)硪黄狫ava將對象保存到文件中/從文件中讀取對象的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • Spring的@Lazy懶加載注解用法詳細(xì)解析

    Spring的@Lazy懶加載注解用法詳細(xì)解析

    這篇文章主要介紹了Spring的@Lazy懶加載注解用法詳細(xì)解析,SpringIoC容器會(huì)在啟動(dòng)的時(shí)候?qū)嵗袉螌?shí)例 bean ,如果我們想要實(shí)現(xiàn) Spring 在啟動(dòng)的時(shí)候延遲加載 bean,即在首次調(diào)用bean的時(shí)候再去執(zhí)行初始化,就可以使用 @Lazy 注解來解決這個(gè)問題,需要的朋友可以參考下
    2023-11-11
  • spring中AOP 注解開發(fā)示例詳解

    spring中AOP 注解開發(fā)示例詳解

    這篇文章主要介紹了spring中AOP注解開發(fā)的相關(guān)資料,文中介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 如何在Spring Boot中建立連接及測試

    如何在Spring Boot中建立連接及測試

    對于剛接觸MQTT的開發(fā)者來說,了解如何在Spring Boot項(xiàng)目中集成MQTT客戶端并建立連接是邁向?qū)嶋H應(yīng)用的重要一步,今天,我將分享一個(gè)詳細(xì)的入門指南,帶你一步步在Spring Boot中建立MQTT連接,并通過JUnit進(jìn)行簡單的單元測試,感興趣的朋友一起看看吧
    2024-12-12

最新評論

黔江区| 梁山县| 峡江县| 辽宁省| 吉隆县| 青州市| 车险| 石嘴山市| 桐梓县| 平乐县| 赤峰市| 宁安市| 灵川县| 旌德县| 天等县| 灵丘县| 巩留县| 西丰县| 昂仁县| 英德市| 汝阳县| 江津市| 永州市| 乐安县| 三穗县| 年辖:市辖区| 麦盖提县| 延川县| 蕲春县| 汝城县| 五华县| 太原市| 额尔古纳市| 云阳县| 搜索| 陇西县| 宜阳县| 林西县| 鸡东县| 林芝县| 永靖县|