diff --git a/algorithm/Longest-Subsquence-problem.cpp b/algorithm/Longest-Subsquence-problem.cpp
new file mode 100644
index 00000000..a921556e
--- /dev/null
+++ b/algorithm/Longest-Subsquence-problem.cpp
@@ -0,0 +1,34 @@
+/* A Naive recursive implementation of LCS problem */
+#include <bits/stdc++.h>
+using namespace std;
+
+
+
+/* Returns length of LCS for X[0..m-1], Y[0..n-1] */
+int lcs( char *X, char *Y, int m, int n )
+{
+	if (m == 0 || n == 0)
+		return 0;
+	if (X[m-1] == Y[n-1])
+		return 1 + lcs(X, Y, m-1, n-1);
+	else
+		return max(lcs(X, Y, m, n-1), lcs(X, Y, m-1, n));
+}
+
+
+
+/* Driver code */
+int main()
+{
+	char X[] = "AGGTAB";
+	char Y[] = "GXTXAYB";
+	
+	int m = strlen(X);
+	int n = strlen(Y);
+	
+	cout<<"Length of LCS is "<< lcs( X, Y, m, n ) ;
+	
+	return 0;
+}
+
+// This code is contributed by rathbhupendra