PAT——有几个PAT
思路来源:https://www.cnblogs.com/asinlzm/p/4440603.html
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。
现给定字符串,问一共可以形成多少个PAT?
输入格式:
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。
输出格式:
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
输入样例:
APPAPT
输出样例:
2
核心思路:如果有一个P出现,则只要知道后面有多少种AT可选,则这个P可以对应的PAT选择方法就有多少种;AT类似。
啰嗦思路:组成PAT的条件有P在A前出现,A在T前出现 。
求PAT选择的方法有多少种,则只要知道每个P对应的PAT选择方法有多少种,求和即可;
每个P对应PAT种类取决于这个P的后面,有多少种AT可选(如果有一个P出现,则只要知道后面有多少种AT可选,则这个P可以对应的PAT选择方法就有多少种)。
一个P后面有多少种AT可选,其实和这个字符串中多少种PAT可选是一个问题,即所有的A对应的AT选法的和;
一个A对应的AT种类取决于这个A后面有多少种T可选(如果有一个A出现,则只要知道后面有多少种T出现,则这个A对应的AT选择方法就有多少种)。
eg:PPPAATTT
字符: P P P A A T T T
位置: 7 6 5 4 3 2 1 0
下标为7的P对应的PAT选法取决于后面字符串(PPAATTT)中AT的选法,其他P相应对应自己后面的字符串的AT选法;
下标为4的A对应的AT选法取决于后面字符串(ATTT)中的T的选法,另一个A相应处理;
下标为2/1/0的T进行不需要选择了,因为一个T对应的T的选法就是自身;
代码变量说明:
numAT表示当前已处理的字符串字串中T的选法,也就表明,如果处理一个字符是A,则这个字符A对应的AT的选法,就是numAT;
numPAT的理解相对应。
手工流程演示:位于下标5的P对应的PAT的选法有6种,来源于P后面的两个A,下标4的A对应的AT有3种选法,下标3的A也是。
package com.hone.basical; import java.util.Scanner; /**
* 原题目:https://www.patest.cn/contests/pat-b-practise/1039
* @author Xia
* 利用递归来处理!!!!
*/ public class basicalLevel1040howManyPat {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char[] pat = in.nextLine().toCharArray();
int len = pat.length;
in.close();
int numPat = 0,numAt = 0, num = 0 ;
//从后面往前面遍历
while((len--)>0){
if (pat[len] == 'T') {
numAt++;
}else if (pat[len] == 'A') {
numPat+=numAt;
}else {
num+=numPat;
//因为输出的结果具有周期性,所以可以提前处理,当参数大于指定的次数的时候
//可以先取余数
if (num > 1000000007) {
num = num%1000000007;
}
}
}
System.out.println(num);
}
}
PAT——有几个PAT的更多相关文章
- PAT甲级:1025 PAT Ranking (25分)
PAT甲级:1025 PAT Ranking (25分) 题干 Programming Ability Test (PAT) is organized by the College of Comput ...
- PAT甲 1095 解码PAT准考证/1153 Decode Registration Card of PAT(优化技巧)
1095 解码PAT准考证/1153 Decode Registration Card of PAT(25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级: ...
- PAT甲级——1093 Count PAT's (逻辑类型的题目)
本文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/93389073 1093 Count PAT's (25 分) ...
- PAT Basic 1095 解码PAT准考证 (25 分)
PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...
- PAT甲级——A1093 Count PAT's【25】
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...
- PAT 有几个PAT
字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T). 现 ...
- PAT甲级 1093 Count PAT‘s (25 分) 状态机解法
题目 原题链接 The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the ...
- PAT (Advanced Level) 1075. PAT Judge (25)
简单模拟题. 注意一点:如果一个人所有提交的代码都没编译通过,那么这个人不计排名. 如果一个人提交过的代码中有编译不通过的,也有通过的,那么那份编译不通过的记为0分. #include<cstd ...
- PAT (Advanced Level) 1025. PAT Ranking (25)
简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...
随机推荐
- SQL语句整理(二) 数据定义语言DDL
前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...
- MAC OS===>IntelliJ IDEA__ant__zookeeper源码编译
1:配置ant环境 https://archive.apache.org/dist/ant/binaries/ 官网下载文件 1.10.0以上需要JDK1.8以上 否则会报 Exception i ...
- spring-boot-maven-plugin 插件
添加了spring-boot-maven-plugin插件后,当运行maven打包的命令,项目会被打包成一个可以直接运行的jar包,使用"java -jar"可以直接运行. 当项目 ...
- VirtualBox使用Centos7与主机共享文件夹
最近使用VitrtualBox安装Centos7学习,liunx脚本和一些命令,经过一些研究完成了虚拟机与 主机共享文件夹,虚拟机链接外部网络,主机与虚拟机互相通信.在其中遇到一些我解决的技术问题记录 ...
- 建造者(生成器)模式C++、Java实现
1.建造者模式UML 图1. 建造者模式UML 2.C++实现 C++实现类视图: 图2. 建造者模式C++实现的类视图 其中,Product的实现代码是(ProductA和ProductB的代码不再 ...
- centos install redis
1. 下载 [logan@localhost java]$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz2. 解压 [log ...
- Git 学习记录
安装 1. https://git-for-windows.github.io下载(网速慢的同学请移步国内镜像),然后按默认选项安装即可.安装完成后,在开始菜单里找到“Git”->“Git B ...
- javascript多浏览器的兼容
一.document.formName.item(”itemName”) 问题 问题说明:IE下,可以使用 document.formName.item(”itemName”) 或 document. ...
- response.setHeader()下载的用法
1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connecti ...
- visual studio code断点调试react
在项目配置文件 .vscode\launch.json 中添加: "sourceMaps": true, "skipFiles": [ &quo ...