https://pintia.cn/problem-sets/994805260223102976/problems/994805323154440192

这道题题目很难懂,本题的本质是找规律。
首先分析题目不难看出以下条件:

  • P A T 三个字母必须都有,且只有这三个字母 且 P T 只能出现一次。
  • P 和 T 之间必须至少有一个A

问题的难点就在于第三个条件上
下图转自: https://www.freesion.com/article/79691103906/

可以发现规律: 前段A的数量 * 中间A的数量 = 后端A的数量

总的代码如下:

#include<cstdio>
#include<iostream>
#include<map>
using namespace std;
int main(void)
{int n; cin>>n;while(n--) {string s; cin>>s;map<char,int>mp;int p=0,t=0;for(int i=0;i<s.size();i++){mp[s[i]]++;if(s[i]=='P') p=i;//记录 P 的位置if(s[i]=='T') t=i;//记录 T 的位置}if(mp.size()==3&&mp['T']==1&&mp['P']==1&&(t-p>1)&&mp['A']!=0&&p*(t-p-1)==(s.size()-1-t))// 仅有三个字母     T的数量是1   P的数量是1   P和T中间有A字母       前段A的数量 * 中间A的数量 = 后端A的数量cout<<"YES"<<endl;elsecout<<"NO"<<endl;}
}
#include<bits/stdc++.h>
using namespace std;
int main(void)
{int n; cin>>n;for(int i=1;i<=n;i++){string s; cin>>s;map<char,int>mp;bool flag=false;for(int i=0;i<s.size();i++)mp[s[i]]++;if(mp.size()==3&&mp['P']==1&&mp['A']&&mp['T']==1) {int l=s.find('P');int r=s.find('T');int len1=l,len2=r-l+1-2,len3=s.size()-r-1;if(r-l>1&&len1*len2==len3) flag=true;}if(flag) cout<<"YES";else cout<<"NO";if(i!=n) puts("");}
}

如果还不懂可以看以下几个写的好的博客:
方案一
方案二

【PAT乙级】1003 我要通过! (20 分)详解相关推荐

  1. PAT 乙级 1069 微博转发抽奖 (20 分)

    题目:PAT 乙级 1069 微博转发抽奖 (20 分) 经验总结: 可以建立一个set,用于存放中奖用户.若set中有此用户,代表此用户已中奖,奖品顺延. C++代码: #include<bi ...

  2. PAT乙级 1032 挖掘机技术哪家强 (20 分)

    1032 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 原题链接 代码 #include < ...

  3. PAT 乙级 1032 挖掘机技术哪家强 (20分)

    1032 挖掘机技术哪家强 (20分) 为了用事实说明挖掘机技术到底哪家强,PAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 1 行给出不超过 10 ...

  4. PAT乙级 1033 旧键盘打字 (20 分)

    1033 旧键盘打字 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 原题链接 代码 #incl ...

  5. PAT 乙级 1094 谷歌的招聘 (20分)

    我的个人网站 Cheese的个人主页http://www.cheese.ren/ 博客来源 PAT 乙级 1094 谷歌的招聘-Cheese的个人博客PAT 乙级 1094 谷歌的招聘 C++http ...

  6. PAT乙级 | 1069 微博转发抽奖 (20分)

    小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M(≤ 1000). ...

  7. PAT乙级1069微博转发抽奖 20(分)

    题目 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入格式: 输入第一行给出三个正整数 M( ≤ \l ...

  8. PAT乙级 | 1094 谷歌的招聘 (20分)

    2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面的网址是一个 10 位素数,这个素数是自然常数 e ...

  9. 【PAT乙级】1044 火星数字 (20 分)

    题目地址 #include<bits/stdc++.h> using namespace std; string a[13]={"tret","jan&quo ...

最新文章

  1. 盘点2021年九大最好用的人脸识别软件
  2. AJAX初探,XMLHttpRequest介绍
  3. android通用的UUID唯一标示符
  4. 树莓派python开发工具哪个好_Thonny——树莓派上Python的最新IDE
  5. 【TensorFlow-windows】keras接口——ImageDataGenerator裁剪
  6. js jq 一些属性
  7. java去除字符串中的特定字符
  8. 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
  9. 【车型识别】基于小波和盒维数实现车型识别含Matlab源码
  10. win10系统打开tftp服务器,win10设置tftp服务器配置
  11. struts2拦截器的一个使用实例
  12. pythonobject转int_在Python中将元组转换为int
  13. 《郭论》郭德纲/著 读后得2021-02-22
  14. 饿了么客户端透明代理 Samaritan详细介绍
  15. css伪类加垂直分割线
  16. 微信小程序授权登录和获取手机号功能(详细)
  17. 学习笔记-----Material design
  18. ChatGPT版必应发飙!怒斥人类:放尊重些
  19. java 狗带风波_狗狗风波
  20. 每日(一文 SleepPoseNet: Multi-View Learning for Sleep Postural Transition Recognition Using UWB

热门文章

  1. 计算机网络_第7版_谢希仁_目录
  2. Linux 下如何安装软件?
  3. Android开发:什么是IBinder
  4. Web的系统测试方法 (转载)
  5. misc_register、 register_chrdev 的区别总结
  6. emq认证mysql后如何使用_EMQ 认证设置和acl访问控制
  7. mysql从入门到转行图片_数据小白转行之路-MYSQL(二)
  8. 多重签名(Multisig)
  9. ECC椭圆曲线算法(4)签名验证过程
  10. 比特币钱包(4) BIP39 助记词