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

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

समस्या विवरण

मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है, हमें इसे कम से कम स्ट्रिंग्स में विभाजित करना है ताकि प्रत्येक स्ट्रिंग एक पालिंड्रोम हो, और फिर स्ट्रिंग्स की संख्या ज्ञात करनी है।

उदाहरण के लिए, यदि इनपुट है s = "levelracecar", तो आउटपुट 2 होगा, क्योंकि दो पालिंड्रोम "level" और "racecar" हैं।

हल करने का दृष्टिकोण

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

  1. n := स्ट्रिंग A का आकार
  2. आकार n+1 का एक ऐरे result परिभाषित करें
  3. result[n] := -1
  4. i := n-1 से 0 तक (घटते क्रम में):
    • result[i] := n - i - 1
    • j := i से n-1 तक:
      • यदि A का सबस्ट्रिंग i से j तक पालिंड्रोम है, तो result[i] := min(result[i], 1 + result[j+1])
  5. result[0] + 1 वापस करें

उदाहरण

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

class Solution {
public:
    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] + 1;
    }
};

int solve(string s) {
    return (new Solution())->solve(s);
}

int main() {
    string s = "levelracecar";
    cout << solve(s);
}

इनपुट

"levelracecar"

आउटपुट

2
  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

  1. C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम

    परिचय मान लीजिए हमारे पास ट्री एजेज की एक सूची है [u, v] के रूप में, जो इंगित करती है कि u और v के बीच एक अनडायरेक्टेड एज है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले राउंड में हम चलते हैं, फिर अगले राउंड में प्रतिद्वंद्वी चलता है और इसी तरह।

  1. - C# में स्ट्रिंग में शब्दों की संख्या गिनना

    स्ट्रिंग में शब्दों की गिनती के लिए हम व्हाइटस्पेस कैरेक्टर्स (स्पेस, टैब, नई लाइन) को विभाजक (डिलीमीटर) के रूप में उपयोग करते हैं। उदाहरण: मैन्युअल लूप using System; public class Demo { public static void Main() { int index = 0, wordCount = 1; // कम से कम 1 शब्द मानकर string s