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

सी ++ प्रोग्राम एक शब्द को विभाजित करने के तरीकों की संख्या खोजने के लिए जैसे कि प्रत्येक शब्द एक पालिंड्रोम है

यहां हम एक शब्द को विभाजित करने के तरीकों की संख्या को खोजने के लिए एक सी ++ प्रोग्राम पर चर्चा करेंगे ताकि प्रत्येक शब्द एक पालिंड्रोम हो।

एल्गोरिदम

Begin
   Take the word as input.
   Function partitionadd(vector<vector<string> > &u, string &s, vector<string> &tmp, int index):
   if (index == 0)
      tmp.clear()
   for i = index to length-1
      st = st + s[i]
      if (checkPalin(st))
         tmp.push_back(st)
         if (i+1 < length)
            partitionadd(u, s, tmp, i+1)
         else
            u.push_back(tmp)
               tmp = curr
   return
End
Begin
   Function partition(string st, vector<vector<string> >&u):
      vector<string> tmp
      addStrings(u, st, tmp, 0)
      printSol(u) //to print the solution
   return
End

उदाहरण

#include <bits/stdc++.h>
using namespace std;

bool checkPalin(string s) { //check if string is palindrome or not.
   int length = s.length();
   length--;
   for (int i=0; i<length; i++) {
      if (s[i] != s[length])
      return false;
      length--;
   }
   return true;
}
void printSol(vector<vector<string> > part) { //print the solution
   for (int i = 0; i < part.size(); ++i) {
      for(int j = 0; j < part[i].size(); ++j)
      cout << part[i][j] << " ";
      cout << endl;
   }
   return;
}
void partitionadd(vector<vector<string> > &u, string &s, vector<string> &tmp, int index) {
   int length = s.length(); //store length of the string
   string st;
   vector<string> curr = tmp;
   // goes through all indexes and recursively add remaining partitions if current string is palindrome.
   if (index == 0)
   tmp.clear();
   for (int i = index; i < length; ++i) {
      st = st + s[i];
      if (checkPalin(st)) {
         tmp.push_back(st);
         if (i+1 < length)
            partitionadd(u,s,tmp,i+1);
         else
            u.push_back(tmp);
         tmp = curr;
      }
   }
   return;
}
void partition(string st, vector<vector<string> >&u) //generate all palindromic partitions of 'str' and stores the result in 'm'. {
   vector<string> tmp;
   addStrings(u, st, tmp, 0);
   printSol(u);
   return;
}
int main() {
   string s = "tutorials";
   vector<vector<string> > part;
   cout<<"the number of partitions:"<<endl;
   partition(s, part);
   return 0;
}

आउटपुट

the number of partitions:
t u t o r i a l s
tut o r i a l s

  1. A में N अंक इस प्रकार जोड़ें कि वह C++ में प्रत्येक जोड़ के बाद B से विभाज्य हो?

    यहां हम देखेंगे कि एन अंकों को जोड़कर एक संख्या ए कैसे उत्पन्न की जाती है, और प्रत्येक चरण में नए अंक जोड़ते समय यह दूसरी संख्या बी से विभाज्य हो जाएगा। आइए विचार करें कि हम 4 जोड़कर 5 अंकों की संख्या बनाने जा रहे हैं। इसके साथ अतिरिक्त अंक। हम 7 से विभाज्यता की जांच करेंगे। संख्या 8 से शुरू होगी। त

  1. सी ++ प्रोग्राम किसी दिए गए स्ट्रिंग के क्रमपरिवर्तन की संख्या का पता लगाने के लिए

    हम एक स्ट्रिंग के पात्रों को अलग-अलग क्रम में व्यवस्थित कर सकते हैं। यहां हम देखेंगे कि हम कैसे गिन सकते हैं कि किसी दिए गए स्ट्रिंग से कितने क्रमपरिवर्तन बन सकते हैं। हम जानते हैं कि यदि एक स्ट्रिंग abc है। इसमें तीन वर्ण हैं; हम उन्हें 3 में व्यवस्थित कर सकते हैं! =6 अलग-अलग तरीके। तो n वर्णों वा

  1. पायथन में एक स्ट्रिंग को विभाजित करने के तरीकों की संख्या खोजने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, हम s को 3 गैर-रिक्त स्ट्रिंग्स s1, s2, s3 में विभाजित कर सकते हैं जैसे कि (s1 concatenate s2 concatenate s3 =s)। हमें उन तरीकों की संख्या ज्ञात करनी है जिन्हें s विभाजित किया जा सकता है ताकि s1, s2, और s3 में वर्णों की संख्या 1 समान हो। उत्तर बहुत बड़ा ह