【PAT甲级真题】- Count PAT‘s (25)

题目来源

Count PAT's (25)

注意点

  • 结果要取模

题目描述

The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters,

and the second one is formed by the 3rd, the 4th, and the 6th characters.

Now given any string, you are supposed to tell the number of PAT's contained in the string.

输入描述:

Each input file contains one test case. For each case, there is only one line giving a string of no more than 10 5 10^5 105

characters containing only P, A, or T.

输出描述:

For each test case, print in one line the number of PAT's contained in the string. Since the result may be a huge number, you only have to

output the result moded by 1000000007.

输入例子:

复制代码
APPAPT

输出例子:

复制代码
2

思路简介

一道经典的 DP 题

推理一遍就是:

  1. 如果当前 "PA" 的数目是 s1,"PAT" 的数目是 s2,那么输入一个 "T" ,它可以和前面所有的 "PA" 组成新的 "PAT" ,总的 "PAT" 就是新的加上旧的,即 s1+s2
  2. 同理如果当前 "P" 的数目是 s0,"PA" 的数目是 s1,那么输入一个 "A" ,它可以和前面所有的 "P" 组成新的 "PA" ,新的加上旧的即 "PA" 的总数

转移方程就是

复制代码
if cin==T:
	PAT=PAT+PA
else if cin== A:
	PA=PA+P
else:
	P++

遇到的问题

无,一遍过

代码

cpp 复制代码
/**
 * https://www.nowcoder.com/pat/5/problem/4039
 * dp
 */
#include<bits/stdc++.h>
using namespace std;


void solve(){
    string s;
    cin>>s;
    int len=s.size();
    int p=0,pa=0,pat=0;
    for(int i=0;i<len;++i){
        if(s[i]=='P')p++;
        if(s[i]=='A')pa=pa+p;
        if(s[i]=='T')pat=(pa+pat)%1000000007;
    }
    cout<<pat;
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    //fstream in("in.txt",ios::in);cin.rdbuf(in.rdbuf());
    int T=1;
    //cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
相关推荐
汀、人工智能2 小时前
[特殊字符] 第89课:岛屿数量
数据结构·算法·数据库架构·图论·bfs·岛屿数量
九英里路2 小时前
cpp容器——string模拟实现
java·前端·数据结构·c++·算法·容器·字符串
A.A呐2 小时前
【C++第二十七章】C++类型转换
c++
呼啦啦5612 小时前
C++vector
java·c++·缓存
2401_892070983 小时前
顺序栈(动态数组实现) 超详细解析(C++ 语言 + 可直接运行)
数据结构·c++·顺序栈
卷福同学3 小时前
去掉手机APP开屏广告,李跳跳2.2下载使用
java·后端·算法
漫霂3 小时前
二叉树的翻转
java·数据结构·算法
语戚3 小时前
力扣 51. N 皇后:基础回溯、布尔数组优化、位运算全解(Java 实现)
java·算法·leetcode·力扣·剪枝·回溯·位运算
熊猫钓鱼>_>3 小时前
从零构建大模型可调用的Skill:基于Function Calling的完整指南
人工智能·算法·语言模型·架构·agent·skill·functioncall