1. 程式人生 > >找出由n個數組成的序列內最長的遞增子序列

找出由n個數組成的序列內最長的遞增子序列

取一個b[]陣列,將原陣列的任意一個數之前為遞減序列的數的個數儲存在裡面(如下)

a[7]: 1 2 1 2 3 4 5

b[7]: 0 1 0 1 2  3 4

最後求出b陣列內最大值以及其下標,然後對應輸出a陣列內的值

輸出結構如下:





完整程式碼如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[1000],b[1000];
    int n,i,j,k=0,m,m1;
    scanf("%d",&n);
    for(i=0;i<n;i++){
      scanf("%d",&a[i]);
    }
    b[0]=0;
    for(i=1;i<n;i++){
      for(j=i;a[j-1]<=a[j];j--){
                 k++;
      }
      b[i]=k;
      k=0;
    }
    for(i=1,m=b[0],m1=0;i<n;i++){
      if(b[i]>=m){
            m=b[i];
            m1=i;
      }
    }
    for(;m>=0;m--){
      printf("%2d",a[m1-m]);
    }
    return 0;
}

相關推薦

n個數組成序列遞增序列

取一個b[]陣列,將原陣列的任意一個數之前為遞減序列的數的個數儲存在裡面(如下): a[7]: 1 2 1 2 3 4 5 b[7]: 0 1 0 1 2  3 4 最後求出b陣列內最大值以及其下標,然後對應輸出a陣列內的值 輸出結構如下: 完整程式碼如下:#inc

完美世界筆試題-遞增序列B-遞增序列打印

spa pan ios ron cnblogs 子序列 bsp sid logs #include<iostream> #include<memory.h> #include<stack> using namespace std; c

大子序列遞增序列公共串、公共序列、字串編輯距離總結

一、最大子序列 即找出由陣列成的一維陣列中和最大的連續子序列。例如{5, -6, 4, 2}的最大子序列是{4, 2},它們的和是6。 思路:假設陣列為num,用dp[i]儲存當遍歷到num[i]時,num[0]~num[i]之間求得的最大子序列的和。 遍歷num,當遍歷到nu

C++計算整數序列遞增序列的長度

Talk is cheap, show me the code. 給定一個整數序列,計算其中的最長遞增子序列的長度,這是一個典型的動態規劃的演算法。 比如8個整數的序列 186 186 150 200 160 130 197 200,最長遞增子序列是

序列遞增序列長度 with matlab

首先生成序列,20個0-100的隨機整數 x=floor(rand(1,20)*100) x= 83     1    68    37    83    50    70    42    30    18    19    68   30    54    15  

三種演算法求一個數字序列遞增序列

也有很多部落格寫如何實現最長遞增子序列的演算法,自己查閱了一些資料總結出三種實現的演算法,兩種是常見的處理思路,還有一種是本人自己想出來的演算法,很好理解,但是效率不是特別高。 演算法一: 將n個數的原序列A[n]排序後得到遞增序列B[n],則把求A的最長單調遞增子序列問題

673. 遞增序列個數

給定一個未排序的整數陣列,找到最長遞增子序列的個數。 示例 1: 輸入: [1,3,5,4,7] 輸出: 2 解釋: 有兩個最長遞增子序列,分別是 [1, 3, 4, 7] 和[1, 3, 5, 7]。 示例 2: 輸入: [2,2,2,2,2] 輸出: 5 解釋:

遞增序列,進一步要給一個序列(動態規劃)

牛客網 給定一個長度為N的陣列,找出一個最長的單調自增子序列(不一定連續,但是順序不能亂) 例如:給定一個長度為8的陣列A{1,3,5,2,4,6,7,8},則其最長的單調遞增子序列為{1,2,4,6,7,8},長度為6. 輸入描述 第一行包含一

LeetCode - 673. Number of Longest Increasing Subsequence(遞增序列個數)

LeetCode - 673. Number of Longest Increasing Subsequence(最長遞增子序列的個數) 題目連結 題目 解析 做這題之前先要知道求一個數組的最長遞增子序列。 做法: 求出最長遞增子序列的長度(max)

] 工作知識儲備(2)---陣列字串那些經典演算法:大子序列和,遞增序列公共串,公共序列,字串編輯距離,不重複串,迴文

作者:寒小陽 時間:2013年9月。 0、前言         這一部分的內容原本是打算在之後的字串或者陣列專題裡面寫的,但看著目前火熱進行的各家網際網路公司筆試面試中,出現了其中的一兩個內容,就隨即將這些經典問題整理整理,單寫一

遞增序列O(n^2)版

#include<iostream> #include<string.h> using namespace std; #define max(a, b)(a>b ? a:b) int solve(int *num, int n) { in

1134 遞增序列(時間複雜度O(n*log(n))

基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題 Description 給出長度為N的陣列,找出這個陣列的最長遞增子序列。(遞增子序列是指,子序列的元素是遞增的) 例如:5 1 6 8 2 4 5 10,最長遞增

Leetcode 673.遞增序列個數

mat font nbsp 排序 最長遞增子序列 超過 個數 strong 所有 最長遞增子序列的個數 給定一個未排序的整數數組,找到最長遞增子序列的個數。 示例 1: 輸入: [1,3,5,4,7] 輸出: 2 解釋: 有兩個最長遞增子序列,分別是 [1, 3,

leetcode遞增序列問題

wan details img mat 最後一個元素 例如 公式 back 一個 題目描寫敘述: 給定一個數組,刪除最少的元素,保證剩下的元素是遞增有序的。 分析: 題目的意思是刪除最少的元素。保證剩下的元素是遞增有序的,事實上換一種方式想,就是尋找最長的遞增有序序列。

[網絡流24題]遞增序列問題 大流

size 個數 clu 編程 input num pac ros ini Description 給定正整數序列x1 ,... , xn 。 (1)計算其最長遞增子序列的長度s。(嚴格遞增) (2)計算從給定的序列中最多可取出多少個長度為s的遞增子序列。 (3)如果允

[luoguP2766] 遞增序列問題(大流)

close spl 方法 emp 路徑 pid code display div 傳送門 題解來自網絡流24題: 【問題分析】 第一問時LIS,動態規劃求解,第二問和第三問用網絡最大流解決。 【建模方法】 首先動態規劃求出F[i],表示以第i位為開頭的最長上

【51NOD-0】1134 遞增序列

子序列 can algorithm view hide 但是 open sin cst 【算法】動態規劃 【題解】經典模型:最長上升子序列(n log n) #include<cstdio> #include<algorithm> #includ

遞增序列

str ear ont longest esp 一個 for n+1 div 1. 動態規劃,使用一個數組保存當前的最大遞增子序列長度,時間復雜度為O(N^2) # include <iostream> # include <cstdlib&

51nod 1376 遞增序列的數量(不是dp哦,線段樹 +  思維)

sort 是個 can stream const 方便 long 序列 printf 題目鏈接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1376 題解:顯然這題暴力的方法很容易想到

51nod 1218 遞增序列 V2(dp + 思維)

ear www str tdi binsearch tor con bsp href 題目鏈接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1218 題解:先要確定這些點是不是屬於最長