Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับซับซีเควลพาลินโดรมทั้งหมดในสตริงที่กำหนดใน C++


ในบทช่วยสอนนี้ เราจะอภิบายโปรแกรมเพื่อหาจำนวนซับซีเควลพาลินโดรมทั้งหมดในสตริงที่กำหนด

สำหรับเรื่องนี้ เราจะได้รับสตริง งานของเราคือหาจำนวนซับซีเควลพาลินโดรมที่สามารถทำได้ในสตริงที่กำหนด

ตัวอย่าง

#include <iostream>
#include <cstring>
using namespace std;

// returning total palindromic sequence
int count_palin(string str) {
    int N = str.length();
    // creating a 2D array
    int cps[N + 1][N + 1];
    memset(cps, 0, sizeof(cps));
    for (int i = 0; i < N; i++)
        cps[i][i] = 1;
    for (int L = 2; L <= N; L++) {
        for (int i = 0; i < N; i++) {
            int k = L + i - 1;
            if (str[i] == str[k])
                cps[i][k] = cps[i][k - 1] + cps[i + 1][k] + 1;
            else
                cps[i][k] = cps[i][k - 1] + cps[i + 1][k] - cps[i + 1][k - 1];
        }
    }
    return cps[0][N - 1];
}

int main() {
    string str = "abcb";
    cout << "Total palindromic subsequence are: " << count_palin(str) << endl;
    return 0;
}

เอาต์พุต

Total palindromic subsequence are: 6