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

सी ++ में लक्ष्य के समान अद्वितीय बाद की संख्या खोजने का कार्यक्रम


मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स s और t हैं, हमें s के बाद के क्रमों की संख्या ज्ञात करनी है जो t के बराबर हैं। अगर उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 तक लौटाएं।

इसलिए, यदि इनपुट s ="abbd" t ="bd" जैसा है, तो आउटपुट 2 होगा, क्योंकि दो संभावित परिणाम "bd" हैं।

  • s[1] कॉनटेनेट s[3]

  • एस[2] एस [3] को संयोजित करें।

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

  • मी :=10^9 + 7

  • यदि t का आकार 0 के समान है, तो -

    • वापसी 0

  • यदि t, s के समान है, तो -

    • वापसी 1

  • यदि t का आकार> s का आकार, तो -

    • वापसी 0

  • आकार की एक सरणी तालिका को t + 1 के आकार के समान परिभाषित करें और 0 से भरें

  • टेबल [0] :=1

  • इनिशियलाइज़ i:=0 के लिए, जब i <साइज़ ऑफ़ s, अपडेट (i से 1 तक बढ़ाएँ), करें -

    • एक सरणी को ऑनसेव परिभाषित करें:=तालिका

    • इनिशियलाइज़ j :=0 के लिए, जब j <टेबल का आकार, अपडेट करें (j को 1 से बढ़ाएँ), करें -

      • यदि s[i] t[j] के समान है, तो -

        • टेबल [जे + 1] =(टेबल [जे + 1] मॉड एम + ऑनसेव [जे] मॉड एम)

  • टेबल [जे + 1] =(टेबल [जे + 1] मॉड एम + ऑनसेव [जे] मॉड एम)

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int solve(string s, string t) {
   int m = 1000000007;
   if (t.size() == 0)
      return 0;
   if (t == s)
      return 1;
   if (t.size() > s.size())
      return 0;
   vector<int> table(t.size() + 1, 0);
   table[0] = 1;
   for (int i = 0; i < s.size(); i++) {
      vector<int> onsave = table;
      for (int j = 0; j < table.size(); j++) {
         if (s[i] == t[j]) {
            table[j + 1] = (table[j + 1] % m + onsave[j] % m) %m;
         }
      }
   }
   return table[t.size()] % m;
}
main(){
   string s = "abbd", t = "bd";
   cout << (solve(s, t));
}

इनपुट

"abbd", "bd"

आउटपुट

2

  1. C++ प्रोग्राम किसी संख्या के सम गुणनखंडों का योग ज्ञात करने के लिए?

    इस भाग में हम देखेंगे कि कैसे हम किसी संख्या के सभी सम अभाज्य गुणनखंडों का योग कुशल तरीके से प्राप्त कर सकते हैं। एक संख्या है मान लीजिए n =480, हमें इसका पूरा गुणनखंड प्राप्त करना है। 480 के अभाज्य गुणनखंड 2, 2, 2, 2, 2, 3, 5 हैं। सभी सम गुणनखंडों का योग 2+2+2+2+2 =10 है। इस समस्या को हल करने के लि

  1. सी ++ प्रोग्राम रिकर्सन का उपयोग करके किसी संख्या के फैक्टोरियल को खोजने के लिए

    एक गैर-ऋणात्मक पूर्णांक n का गुणनखंड उन सभी धनात्मक पूर्णांकों का गुणनफल होता है जो n से कम या उसके बराबर होते हैं। उदाहरण के लिए:4 का भाज्य 24 है। 4! = 4 * 3 * 2 *1 4! = 24 एक पूर्णांक का भाज्य एक पुनरावर्ती कार्यक्रम या एक पुनरावृत्त कार्यक्रम का उपयोग करके पाया जा सकता है। निम्न प्रोग्राम किसी

  1. पायथन में अलग-अलग अनुक्रमों की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें स्ट्रिंग s के अलग-अलग अनुक्रमों की संख्या गिननी है। अगर उत्तर बहुत बड़ा है तो परिणाम मॉड्यूलो 10^9 + 7 लौटाएं। इसलिए, यदि इनपुट s =bab जैसा है, तो आउटपुट 6 होगा क्योंकि 6 अलग-अलग क्रम हैं, ये a, b, ba, ab, bb, abb हैं। । इसे हल करने के लिए, हम इन चरणों