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

นับ Palindromic Subsequence ทั้งหมดใน String ที่กำหนดใน 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