【DP】有几个PAT

描述

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位§,第4位(A),第6位(T);第二个PAT是第3位§,第4位(A),第6位(T)。

现给定字符串,问一共可以形成多少个PAT?

输入

输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

输出

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。

样例输入

APPAPT

样例输出

2

题目来源

PAT 乙级

分析:
一道简单的DP题,先统计T的个数,在从前往后找P的,中间遇到A后就累加。

代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int l=s.length();
long long numT=0,numP=0,sum=0;
for (int i=0;i<l;i++)
{
if (s[i]‘T’) numT++;
}
for (int i=0;i<l;i++)
{
if (s[i]
‘P’) numP++;
else
if (s[i]‘T’) numT–;
else
if (s[i]
‘A’) sum=(sum+numP*numT)%1000000007;
}
printf("%d",sum%1000000007);
return 0;
}

发布了65 篇原创文章 · 获赞 0 · 访问量 1335

猜你喜欢

转载自blog.csdn.net/Skynamer/article/details/103953534
今日推荐