From ff8bb607bb7cc08127be79aab0efd853e3f86a5b Mon Sep 17 00:00:00 2001 From: x-samx Date: Sun, 27 Oct 2019 00:37:03 +0530 Subject: [PATCH] Added longest bitonic subsequence --- Longest_Bitonic_Subsequence/lbs.cpp | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Longest_Bitonic_Subsequence/lbs.cpp diff --git a/Longest_Bitonic_Subsequence/lbs.cpp b/Longest_Bitonic_Subsequence/lbs.cpp new file mode 100644 index 0000000..0d4082a --- /dev/null +++ b/Longest_Bitonic_Subsequence/lbs.cpp @@ -0,0 +1,42 @@ + +#include +using namespace std; + +int main() +{ + vector A{1,11,2,10,4,5,2}; + int n = A.size(); + if(n < 1) + return 0; + int lis[n]; + int lds[n]; + lis[0] = 1; + lds[n-1] = 1; + for(int i = 1 ; i < A.size() ; ++i) + { + lis[i] = 1; + for(int j = 0 ; j < i ; ++j) + { + if(A[i] > A[j] && lis[i] < lis[j] + 1) + lis[i] = lis[i] + 1; + } + } + for(int i = n-2 ; i >= 0 ; --i) + { + lds[i] = 1; + for(int j = n-1 ; j > i ; --j) + { + if(A[i] > A[j] && lds[i] < lds[j] + 1) + lds[i] = lds[i] + 1; + } + } + int max = lis[0] + lds[0] - 1; + for(int i= 0 ; i < n ; ++i) + { + if(lis[i] + lds[i] - 1 > max) + max = lis[i] + lds[i] - 1; + } + + cout << "\nLength of longest bitonic subsequence : " << max; + return 0; +} \ No newline at end of file