找出由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 題解:先要確定這些點是不是屬於最長