题目
字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。
现给定字符串,问一共可以形成多少个 PAT?
输入格式:
输入只有一行,包含一个字符串,长度不超过10^5,只包含 P、A、T 三种字母。
输出格式:
在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。
输入样例:
APPAPT
输出样例:
2
思路
一开始写了个动态规划版本的,用f[i]记录前i个字符组成PAT的个数,从前往后依次计算,递推公式为:
f[0] = 0
f[i] = f[i-1] //若S[i]!='T'
f[i] = 2 * f[i-1

该博客详细介绍了PAT乙级竞赛中的一道真题,探讨了如何计算一个只包含P、A、T的字符串中能形成多少个PAT序列的问题。博主首先尝试使用动态规划方法解决,但在处理PA组合与T的结合时出现错误。通过参考AC代码,博主发现更简洁的解决方案,即记录P、PA、PAT的数量,同时注意对1000000007取模避免溢出。博客提供了错误思路及正确解题方法。
最低0.47元/天 解锁文章
484

被折叠的 条评论
为什么被折叠?



