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

सी++ में पलिंड्रोम विभाजन II


मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें इस स्ट्रिंग को अलग-अलग सबस्ट्रिंग में विभाजित करने के लिए आवश्यक कटों की संख्या ज्ञात करनी होगी और प्रत्येक भाग एक पैलिंड्रोम है। तो अगर स्ट्रिंग "अब्बा" की तरह है, तो इसमें 2 कट लगेंगे। [एबीए|बीबी|ए]

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

  • n :=स्ट्रिंग s में वर्णों की संख्या

  • आकार n + 1 नामक एक सरणी बनाएं

  • रेस [एन] :=-1

  • मैं के लिए n - 1 से 0 तक की श्रेणी में हूं

    • रेस [i] :=n – i – 1

    • j के लिए i से n तक की श्रेणी में

      • यदि a का, अनुक्रमणिका i से, j – i में स्थानापन्न एक पैलिंड्रोम है, तो

        • रेस [i] :=मिनट का रेस [i] और 1 + रेस [j + 1]

  • रिटर्न रेस[0]

उदाहरण

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

#include <bits/stdc++.h>
using namespace std;
bool isPalindrome(string A) {
   int left = 0;
   int right = A.size()-1;
   while(left < right) {
      if(A[left] != A[right]) {
         return 0;
      }
      left++;
      right--;
   }
   return 1;
}
int solve(string A) {
   int n = A.size();
   vector<int>result(n+1);
   result[n] = -1;
   for(int i=n-1;i>=0;i--) {
      result[i] = n-i-1;
      for(int j=i;j<n;j++) {
         if(isPalindrome(A.substr(i, j-i+1))) {
            result[i] = min(result[i], 1 + result[j+1]);
         }
      }
   }
   return result[0];
}
class Solution {
   public:
   int minCut(string s) {
      return solve(s);
   }
};
main(){
   Solution ob;
   cout << (ob.minCut("ababba"));
}

इनपुट

“ababba”

आउटपुट

2

  1. सी++ में पैलिंड्रोम विभाजन

    मान लीजिए कि हमारे पास एक इनपुट स्ट्रिंग है, उस स्ट्रिंग का एक विभाजन पैलिंड्रोम विभाजन है, जब विभाजन का प्रत्येक विकल्प एक पैलिंड्रोम होता है। इस खंड में, हमें दिए गए स्ट्रिंग को विभाजित करने वाले पैलिंड्रोम के लिए आवश्यक न्यूनतम कटौती का पता लगाना है। तो अगर स्ट्रिंग अब्बाबबाबाबाबा की तरह है, तो प

  1. C++ में एक स्ट्रिंग के सभी पैलिंड्रोम क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें उन सभी पैलिंड्रोमिक क्रमपरिवर्तनों को प्रिंट करना होता है जो उस स्ट्रिंग के वर्णों से संभव होते हैं। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं - इनपुट − स्ट्रिंग =आब आउटपुट - अब्बा बाबा इस समस्या को हल करने के लिए हमें स्ट्रिंग के वर्णों को

  1. जाँच करें कि C++ में कोई संख्या पालिंड्रोम है या नहीं

    यहां हम देखेंगे कि कैसे जांचा जाता है कि कोई संख्या पैलिंड्रोम है या नहीं। दोनों दिशाओं में पैलिंड्रोम नंबर समान हैं। उदाहरण के लिए, संख्या 12321 पैलिंड्रोम है, लेकिन 12345 पैलिंड्रोम नहीं है। तर्क बहुत सीधा है। हमें संख्या को उल्टा करना है, और यदि उलटी संख्या वास्तविक संख्या के समान है, तो वह एक प