欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)最長遞增子序列問題的解決方法

 更新時間:2014年09月16日 15:15:16   投稿:shichen2014  
這篇文章主要介紹了C語言實現(xiàn)最長遞增子序列問題的解決方法,采用遞歸的方法解決該問題,是非常經(jīng)典的一類算法,需要的朋友可以參考下

本文實例展示了C語言實現(xiàn)最長遞增子序列問題的解決方法。分享給大家供大家參考。具體方法如下:

問題描述:

給定一個序列,找出其最長遞增子序列長度。

比如 輸入 1 3 7 5

輸出 3

算法解決思路:

利用動態(tài)規(guī)劃的思想,以序列的每個點最為最右端,找出每個點作為最右端時的子序列長度的最大值,即問題的求解。因此,在計算前面的每個點的時候,將其結(jié)果保存下來,后面的點與前面的點的數(shù)值進(jìn)行比較,如果大,則在其長度基礎(chǔ)上加1,并且找出所有可能情況下最長的保存為當(dāng)前點的長度。形成遞歸。

具體實現(xiàn)代碼如下:

#include "stdio.h"
#include "stdlib.h"
#define MAXDATA 10000
int main(){
  int data[MAXDATA]; /*數(shù)據(jù)序列*/
  int lgs[MAXDATA];  /*最長子序列長度*/
  int n,temp,k; /*n 序列長度 temp 子序列長度中間變量 */
  scanf("%d",&n);
  if(n>10000){
     return 0;      
  }
  for(int i=0;i<n;i++){
    scanf("%d",&data[i]);
  }
  for(int i=0;i<MAXDATA;i++){
    lgs[i]=1;  /*給每一個序列點作為右端時的最大序列長度為1*/
  }
  for(int i=1;i<n;i++){
    temp=1;
    for(int j=0;j<i;j++){ /*與其前面的每一個進(jìn)行比較*/
      if(data[i]>data[j]){ /*如果數(shù)據(jù)比前面的某一個的值大*/
        if(lgs[i]+lgs[j]>temp){ /*找出該點的最大子序列長度*/
          temp=lgs[i]+lgs[j];
        } 
      }
    }
    lgs[i]=temp;
  }
  temp=lgs[0];
  for(int i=1;i<n;i++){
    if(lgs[i]>temp){
      temp=lgs[i];
    }
  }
  printf("%d",temp);
  system("pause");
}

希望本文所述對大家C程序算法設(shè)計的學(xué)習(xí)有所幫助。

相關(guān)文章

  • 如何用C++實現(xiàn)雙向循環(huán)鏈表

    如何用C++實現(xiàn)雙向循環(huán)鏈表

    本篇文章是對用C++實現(xiàn)雙向循環(huán)鏈表的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 利用C語言繪制一個正方體

    利用C語言繪制一個正方體

    這篇文章主要為大家詳細(xì)介紹了如何利用C語言繪制一個正方體,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-01-01
  • C++之構(gòu)造函數(shù)默認(rèn)值設(shè)置方式

    C++之構(gòu)造函數(shù)默認(rèn)值設(shè)置方式

    這篇文章主要介紹了C++之構(gòu)造函數(shù)默認(rèn)值設(shè)置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • C++中g(shù)etline()和get()的方法淺析

    C++中g(shù)etline()和get()的方法淺析

    大家都知道作為C++獲取輸入流的方法,幾乎在任何一本資料書上getline()方法和get()方法都作為入門級的方法進(jìn)行講述,即便如此,筆者在學(xué)習(xí)C++的過程中仍經(jīng)常忘記這二者的使用要點,可能也有C++的初學(xué)者對這兩個方法還心存疑慮,本篇文章就這兩個方法的使用進(jìn)行簡要闡述。
    2016-10-10
  • C語言實現(xiàn)順序表的順序查找和折半查找

    C語言實現(xiàn)順序表的順序查找和折半查找

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)順序表的順序查找和折半查找,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言動態(tài)內(nèi)存管理分析總結(jié)

    C語言動態(tài)內(nèi)存管理分析總結(jié)

    C語言中開辟內(nèi)存有很多種方式,目前我們最常用的也就是數(shù)組,但數(shù)組是在我們用到他之前就得設(shè)定好它的長度,有時很不方便。隨意我們來探究動態(tài)內(nèi)存管理
    2021-11-11
  • C語言數(shù)組詳細(xì)介紹

    C語言數(shù)組詳細(xì)介紹

    大家好,本篇文章主要講的是C語言數(shù)組詳細(xì)介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C語言實現(xiàn)貪吃蛇小游戲

    C語言實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++字符串反轉(zhuǎn)的幾種方法

    C++字符串反轉(zhuǎn)的幾種方法

    通過不同的方法,實現(xiàn)對所輸入字符串的反轉(zhuǎn),具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 淺析bilateral filter雙邊濾波器的理解

    淺析bilateral filter雙邊濾波器的理解

    這篇文章主要介紹了bilateral filter雙邊濾波器的通俗理解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論