计算C ++中给定字符串中的所有回文子序列
在本教程中,我们将讨论一个程序,以查找给定字符串中所有回文子序列的数量。
为此,我们将提供一个字符串。我们的任务是找到在给定字符串中可以回文的子序列的数量。
示例
#include<iostream>
#include<cstring>
using namespace std;
//返回总回文序列
int count_palin(string str){
int N = str.length();
//创建一个二维数组
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 << "回文总子序列为: " << count_palin(str) << endl;
return 0;
}输出结果
回文总子序列为: 6
热门推荐
1 泰迪狗狗如何训练
3 狗狗训练图
5 狗狗训练方法
6 训练狗狗不咬人
8 敏捷训练狗狗
10 训练狗狗吃饭
11 泰迪狗狗训练
12 狗狗从多大开始训练
13 狗狗训练学校费用
14 怎么去训练狗狗
15 狗狗训练狗狗
16 狗狗训练教程
17 训练狗狗装死
18 泰迪狗狗的训练方法