Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ प्रोग्रामिंग में विशिष्ट परिणाम


मान लीजिए कि हमारे पास स्ट्रिंग्स S और T हैं। हमें S के अलग-अलग क्रमों की संख्या गिननी है जो T के बराबर है।

हम जानते हैं कि एक स्ट्रिंग का अनुवर्ती एक नया स्ट्रिंग है जो शेष वर्णों की सापेक्ष स्थिति को परेशान किए बिना वर्णों में से कुछ (कोई नहीं हो सकता) को हटाकर मूल स्ट्रिंग से बनता है। (जैसे, "एसीई" "एबीसीडीई" का अनुवर्ती है जबकि "एईसी" नहीं है)।

अगर इनपुट स्ट्रिंग्स "बैल्लून" और "बैलून" हैं, तो चुनने के 36 अलग-अलग तरीके होंगे।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=s का आकार, m :=t का आकार। s और t को उनके सामने रिक्त स्थान जोड़कर अपडेट करें

  • आकार का एक मैट्रिक्स बनाएं (n + 1) x (m + 1)

  • dp[0, 0] :=1 सेट करें, फिर सभी पंक्ति के 0वें कॉलम के लिए 1 सेट करें, 1 डालें

  • मैं के लिए 1 से n की सीमा में

    • j के लिए 1 से m की सीमा में

      • अगर s[i] =t[j], तो

        • डीपी [आई, जे]:=डीपी [i - 1, जे - 1]

      • डीपी [i, j]:=dp [i, j] + dp [i – 1, j]

  • वापसी डीपी [एन, एम]

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
   public:
   int numDistinct(string s, string t) {
      int n = s.size();
      int m = t.size();
      s = " " + s;
      t = " " + t;
      vector < vector <lli> > dp(n + 1, vector <lli> (m + 1));
      dp[0][0] = 1;
      for(int i = 1; i <= n; i++)dp[i][0] = 1;
      for(int i = 1; i <= n; i++){
         for(int j = 1; j <= m; j++){
            if(s[i] == t[j]) dp[i][j] = dp[i - 1][j - 1];
            dp[i][j]+= dp[i - 1][j];
         }
      }
      return dp[n][m];
   }
};
main(){
   Solution ob;
   cout << (ob.numDistinct("baalllloonnn", "balloon"));
}

इनपुट

"baalllloonnn"
"balloon"

आउटपुट

36

  1. C++ में बेसिक ग्राफिक प्रोग्रामिंग

    C++ प्रोग्रामिंग भाषा एक बहुमुखी प्रोग्रामिंग भाषा है। C++ का उपयोग करके आप लो-एंड ग्राफ़िक्स भी बना सकते हैं यानी स्टाइलिश फ़ॉन्ट्स के साथ मूल आकार और शब्द बनाना और उनमें रंग जोड़ना c++ का उपयोग करके किया जा सकता है। ग्राफिक प्रोग्रामिंग आपके टर्मिनल या कमांड प्रॉम्प्ट का उपयोग करके c++ में की जा

  1. सी++ प्रोग्रामिंग भाषा विशेषताएं

    C++ को एक मध्यम-स्तरीय भाषा के रूप में माना जाता है, क्योंकि इसमें उच्च-स्तरीय और निम्न-स्तरीय भाषा सुविधाओं का संयोजन होता है। यह C का सुपरसेट है, और वस्तुतः कोई भी कानूनी C प्रोग्राम एक कानूनी C++ प्रोग्राम है। C++ विभिन्न प्लेटफार्मों पर चलता है, जैसे कि विंडोज, मैक ओएस और यूनिक्स के विभिन्न संस्

  1. C++ प्रोग्रामिंग लैंग्वेज क्या है?

    C++ एक प्रोग्रामिंग भाषा है जिसे बेल लैब्स में 1979 में बजेर्न स्ट्रॉस्ट्रुप द्वारा विकसित किया गया था। C++ को एक मध्य-स्तरीय भाषा के रूप में माना जाता है, क्योंकि इसमें उच्च-स्तरीय और निम्न-स्तरीय भाषा सुविधाओं का संयोजन होता है। यह सी का सुपरसेट है, और वस्तुतः कोई भी कानूनी सी प्रोग्राम कानूनी सी