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

C++ में पालिंड्रोम पार्टीशनिंग II


मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें इस स्ट्रिंग को विभिन्न उपस्ट्रिंग में विभाजित करने के लिए आवश्यक कट की संख्या ढूंढनी है और प्रत्येक भाग एक पालिंड्रोम है। तो यदि स्ट्रिंग "ababba" जैसी है, तो इसमें 2 कट लगेंगे। [aba|bb|a]

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

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

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

  • res[n] := -1

  • i को n - 1 से 0 तक नीचे की ओर

    • res[i] := n - i - 1

    • j को i से n तक की रेंज में

      • यदि इंडेक्स i से, j - i लंबाई का a का उपस्ट्रिंग एक पालिंड्रोम है, तो

        • res[i] := res[i] और 1 + res[j + 1] का न्यूनतम

  • res[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. - C++ में पैलिंड्रोम विभाजन (Palindrome Partitioning)

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

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

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

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

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