//活用递推计算有几个PAT
#include<cstdio>
#include<cstring>
const int MAXN=100010;
const int MOD=1000000007;
char str[MAXN];
int leftNumP[MAXN]={0};
int main(){
gets(str);
int len=strlen(str);
for(int i=0;i<len;i++){
if(i>0){
leftNumP[i]=leftNumP[i-1];
}
if(str[i]=='P'){
leftNumP[i]++;
}
}
int ans=0,rightNumT=0;
for(int i=len-1;i>=0;i--){
if(str[i]=='T'){
rightNumT++;
}else if(str[i]=='A'){
ans=(ans+leftNumP*rightNumT);
}
}
printf("%d\n",ans);
return 0;
}
//活用递推计算有几个PAT
最新推荐文章于 2024-07-19 00:01:03 发布
该博客介绍了一段C++代码,用于计算字符串中'P'和'T'形成的'PAT'子串的组合数量。通过遍历字符串并维护左右'P'和'T'的数量,实现了高效的计算方法。
314

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



