博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT Basic 1040
阅读量:5288 次
发布时间:2019-06-14

本文共 999 字,大约阅读时间需要 3 分钟。

1040 有几个PAT

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

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

输入格式:

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

输出格式:

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

输入样例:

APPAPT

输出样例:

2   题解:这道题乍一看感觉完全无从下手啊,难道要我在考场上写一个LCS求他和PAT这个串的最大公共子序列根据他的矩阵图求解?直接暴力的话肯定超时啊。   不过在冷(wang)静(shang)思(cha)考(yue)后,发现事情没有我想的那么复杂,正面直接寻找或许确实很难,那我们不妨从后面开始找, 我们可以一个一个找,先找T的数量,当碰到A时,这时AT的数量就是AT原有的数量(初始化为0)加上T的数量,碰上P时,PAT的数量就是PAT原有的数量加上AT的数量。倒着跑一遍该字符串即可。 代码如下:
1 #include
2 3 using namespace std; 4 5 int main() 6 { 7 string a; 8 cin>>a; 9 long long int num_t = 0, num_at = 0, num_pat = 0;10 for(int i = a.length(); i >= 0; i--){11 if( a[i] == 'T')12 num_t++;13 else if( a[i] == 'A')14 num_at =(num_at + num_t )%1000000007;15 else if( a[i] == 'P')16 num_pat = (num_pat + num_at) %1000000007; 17 }18 cout<

 

 

转载于:https://www.cnblogs.com/yxp400/p/9460308.html

你可能感兴趣的文章
matlab 中如何创建以及获取popupmenu的值
查看>>
【机器学习】多项式回归python实现
查看>>
查看cuda版本和cudann
查看>>
eclipse 开始运行提示 Java was started but returned exit code=13
查看>>
预编译scss以及scss和less px 转rem
查看>>
git 问题记录
查看>>
word vba 1 页面视图
查看>>
系统变量和环境变量的区别
查看>>
现代科技高管李刚去向已不再是迷
查看>>
try…catch 结构
查看>>
JavaBean
查看>>
【交题大桥】团队信息存档
查看>>
柯里化
查看>>
【Java】Jackson解析xml的坑
查看>>
javaTest04
查看>>
linux / shell /adb
查看>>
“新智认知”杯上海高校程序设计竞赛暨第十七届上海大学程序设计春季联赛(D题,贪心+栈)...
查看>>
c/c++ 线性栈
查看>>
6月1日PM
查看>>
实验二 网络嗅探实验
查看>>