Skip to content

Commit dfbffd6

Browse files
Update longest_bitonic_subsequence.cpp
1 parent 15d6db8 commit dfbffd6

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed

DP/LongestBitonicSubseq/longest_bitonic_subsequence.cpp

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,71 +2,71 @@
22
using namespace std;
33

44
//Longest Increasing Decreasing Subsequence
5-
int lidss(int n,int arr[])
5+
int lidss(int n,int arr[])
66
{
7-
if(n==0)
7+
if(n==0)
88
return 0;
9-
int lenI[n];
10-
int lenD[n];
11-
12-
for(int i=0;i<n;i++)
13-
{
14-
lenI[i]=1;
15-
lenD[i]=1;
16-
}
17-
18-
//calculating increasing subsequence
19-
for(int i=1;i<n;i++)
9+
int lenI[n];
10+
int lenD[n];
11+
12+
for(int i=0; i<n; i++)
13+
{
14+
lenI[i]=1;
15+
lenD[i]=1;
16+
}
17+
18+
//calculating increasing subsequence
19+
for(int i=1; i<n; i++)
20+
{
21+
for(int j=0; j<i; j++)
2022
{
21-
for(int j=0;j<i;j++)
23+
if(arr[j]<arr[i] && lenI[i]<lenI[j]+1)
2224
{
23-
if(arr[j]<arr[i] && lenI[i]<lenI[j]+1)
24-
{
25-
lenI[i]=lenI[j]+1;
26-
}
25+
lenI[i]=lenI[j]+1;
2726
}
2827
}
29-
30-
//calculating decreasing subsequence
31-
for(int i=n-2;i>=0;i--)
28+
}
29+
30+
//calculating decreasing subsequence
31+
for(int i=n-2; i>=0; i--)
32+
{
33+
for(int j=n-1; j>i; j--)
3234
{
33-
for(int j=n-1;j>i;j--)
35+
if(arr[j]<arr[i] && lenD[i]<lenD[j]+1)
3436
{
35-
if(arr[j]<arr[i] && lenD[i]<lenD[j]+1)
36-
{
37-
lenD[i]=lenD[j]+1;
38-
}
37+
lenD[i]=lenD[j]+1;
3938
}
4039
}
41-
42-
//calculate longest Increasing and then decreasing subsequence starting from each element
43-
int max=1;
44-
for(int i=0;i<n;i++)
45-
{
40+
}
41+
42+
//calculate longest Increasing and then decreasing subsequence starting from each element
43+
int max=1;
44+
for(int i=0; i<n; i++)
45+
{
4646
int len=lenI[i]+lenD[i]-1;
4747
if(max<len)
4848
{
49-
max=len;
49+
max=len;
5050
}
51-
}
52-
return max;
51+
}
52+
return max;
5353
}
5454

5555
int main() {
56-
int t;
57-
cin>>t;
58-
while(t--)
59-
{
60-
int n;
61-
cin>>n;
62-
int arr[n];
63-
for(int i=0;i<n;i++)
64-
{
65-
cin>>arr[i];
66-
}
67-
cout<<lidss(n,arr)<<endl;
68-
}
69-
return 0;
56+
int t;
57+
cin>>t;
58+
while(t--)
59+
{
60+
int n;
61+
cin>>n;
62+
int arr[n];
63+
for(int i=0; i<n; i++)
64+
{
65+
cin>>arr[i];
66+
}
67+
cout<<lidss(n,arr)<<endl;
68+
}
69+
return 0;
7070
}
7171

7272

0 commit comments

Comments
 (0)