From 70536b0a628ea5381cb9bf0fbef38476c21ee327 Mon Sep 17 00:00:00 2001 From: Vipanshu Suman <73050057+vipu18@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:44:27 +0530 Subject: [PATCH] Implement distinct subsequences function in C++ --- .../Distinct_Subsequences.cpp | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 CPP/dynamic-programming/Distinct_Subsequences.cpp diff --git a/CPP/dynamic-programming/Distinct_Subsequences.cpp b/CPP/dynamic-programming/Distinct_Subsequences.cpp new file mode 100644 index 0000000..ac65a1d --- /dev/null +++ b/CPP/dynamic-programming/Distinct_Subsequences.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +using namespace std; + +// Paste your Solution class here (choose one implementation, e.g., Tabulation) +class Solution { +const int mod = 1e9+7; +public: + int distinctSubsequences(string s, string t) { + int n = s.size(); + int m = t.size(); + vector>dp(n+1, vector(m+1, 0)); + for(int i = 0; i<=n; i++){ + dp[i][0] = 1; + } + for(int i = 1; i<=m; i++){ + dp[0][i] = 0; + } + for(int i = 1; i<=n; i++){ + for(int j =1; j<=m; j++){ + if(s[i-1] == t[j-1]){ + dp[i][j] = (dp[i-1][j-1] + dp[i-1][j])%mod; + } + else{ + dp[i][j] = dp[i-1][j]; + } + } + } + return dp[n][m]; + } +}; + +int main() { + string s, t; + cout << "Enter string s: "; + cin >> s; + cout << "Enter string t: "; + cin >> t; + Solution sol; + int result = sol.distinctSubsequences(s, t); + cout << "Number of distinct subsequences: " << result << endl; + return 0; +}