Skip to content

Commit ce6b401

Browse files
author
Skm2000
committed
DP
1 parent 06d60a3 commit ce6b401

5 files changed

+104
-0
lines changed

Longest_Decreasing_Subsequence.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int LDS(int a[],int size){
5+
int dp[size+1],res=1;
6+
for(int i=0;i<size;i++){
7+
dp[i] = 1;
8+
}
9+
for(int i=size-1;i>=0;i--){
10+
for(int j=0;j<i;j++){
11+
if(a[i]>a[j]){
12+
dp[i] = max(dp[i],1+dp[j]);
13+
}
14+
}
15+
res = max(res,dp[i]);
16+
}
17+
return res;
18+
}
19+
int main(){
20+
int a[] = {10,9,2,5,3,7,101,18};
21+
int size = sizeof(a)/sizeof(a[0]);
22+
cout<<LDS(a,size)<<"\n";
23+
}

Longest_Increasing_Subsequence.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
int LIS(int a[],int size){
5+
int dp[size+1],res=1;
6+
for(int i=0;i<size;i++){
7+
dp[i] = 1;
8+
}
9+
for(int i=0;i<size;i++){
10+
for(int j=0;j<i;j++){
11+
if(a[i]>a[j]){
12+
dp[i] = max(dp[i],1+dp[j]);
13+
}
14+
}
15+
res = max(res,dp[i]);
16+
}
17+
return res;
18+
}
19+
int main(){
20+
int a[] = {10,9,2,5,3,7,101,18};
21+
int size = sizeof(a)/sizeof(a[0]);
22+
reverse(a,a+size);
23+
cout<<LIS(a,size)<<"\n";
24+
}
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
int MSDS(int a[],int size){
4+
int dp[size];
5+
for(int i=0;i<size;i++){
6+
dp[i] = a[i];
7+
}
8+
for(int i=1;i<size;i++){
9+
for(int j=0;j<i;j++){
10+
if(a[i]>a[j] && dp[i]<a[i]+dp[j]){
11+
dp[i] = a[i]+dp[j];
12+
}
13+
}
14+
}
15+
int max = dp[0];
16+
for(int i=1;i<size;i++){
17+
if(dp[i]>max){
18+
max = dp[i];
19+
}
20+
}
21+
return max;
22+
}
23+
24+
int main(){
25+
int a[] = {1, 101, 2, 3, 100, 4, 5};
26+
int size = sizeof(a)/sizeof(a[0]);
27+
reverse(a,a+size);
28+
cout<<MSDS(a,size)<<"\n";
29+
}
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
int MSIS(int a[],int size){
4+
int dp[size];
5+
for(int i=0;i<size;i++){
6+
dp[i] = a[i];
7+
}
8+
for(int i=1;i<size;i++){
9+
for(int j=0;j<i;j++){
10+
if(a[i]>a[j] && dp[i]<a[i]+dp[j]){
11+
dp[i] = a[i]+dp[j];
12+
}
13+
}
14+
}
15+
int max = dp[0];
16+
for(int i=1;i<size;i++){
17+
if(dp[i]>max){
18+
max = dp[i];
19+
}
20+
}
21+
return max;
22+
}
23+
24+
int main(){
25+
int a[] = {1, 101, 2, 3, 100, 4, 5};
26+
int size = sizeof(a)/sizeof(a[0]);
27+
cout<<MSIS(a,size)<<"\n";
28+
}

a.out

-432 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)