回文子串

该博客探讨了一种使用动态规划方法寻找特定条件的回文子串的方法。作者指出,由于题目中只有A和B两个字母,关键在于识别并排除四种不满足条件的子序列类型:ABBB…, BAAA…, AAA…B, BBB…A。通过计算这些类型的子序列数量,并从总子序列数中减去,可以得出符合条件的回文子串数量。计算过程中,需注意只考虑长度大于等于2的子序列,并在遍历过程中处理交界处的累积计数。" 109014592,8728081,面向对象编程:多态详解与应用,"['面向对象', '继承', '多态', '编程概念']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
解题思路:
看起来很复杂的题目,我是通过动态规划求出来了所有的回文序列的左右端点的值,然后对每个子序列的单独进行判断是否是符合要求的子序列,只过了5个测试点。其实这道题和一般的回文序列问题不大一样,它只有A和B两个字母,所以关键是找到不满足要求的子序列的形式,只有四种:ABBB…,BAAA…,AAA…B,BBB…A,然后计算出这四种类型的子序列的个数,由子序列总数减去这四种类型的子序列的个数即可。注意我们只考虑长度大于等于2的子序列,单个字母一定不符合要求。计算这四种类型的子序列的个数时,从前向后遍历,遇到两个不同字母的交界处时,计算当前累积的mycount的值,如果没有到不同字母的交界处,则持续减1,直到遇到两个不同字母的交界处或者序列遍历结束。
参考代码:

#include <iostream>
#include <cstdio>
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值