
[编程题]有几个PAT(25)
根据算法笔记上的思路: 对于每一个A,其左侧所有P的数目与其右侧所有T的数目相乘得到的结果即为这个A能够组成的pat数,统计所有A能够组成的pat数求和,即为题目的答案。
发布日期:2021-05-07 23:12:03
浏览次数:22
分类:精选文章
本文共 1021 字,大约阅读时间需要 3 分钟。
关键词:递推关系,动态规划
试题链接: https://www.nowcoder.com/questionTerminal/5e7d025e91ab468f909cb93d431b89c3 问题描述:
备注:
最好每次相加的时候都能够取一次模,不然可能有溢出的风险。解决方案:
#include#include using namespace std;const int maxn=100010;const int mod=1000000007;//算法笔记思路:寻找每一个A左边的P的个数和右边的T的个数int main(){ char str[maxn]; int leftP[maxn]={ 0}; int ans=0,rightT=0; //获取输入字符串 cin>>str; int len=strlen(str); for(int i=0;i =0;i--){ //从右向左遍历字符串 //当前字符为T则计数+1 if(str[i]=='T'){ rightT++; //当前字符为A则左边P数与右边T数相乘得到当前A可组成pat的结果 }else if(str[i]=='A'){ ans=(ans+leftP[i]*rightT)%mod;//每次都要取余,否则可能溢出 } } cout<
代码简化:
#include#include using namespace std;const int maxn=100010;const int mod=1000000007;//参考大佬简练的代码int main(){ char str[maxn]; int p=0,pa=0,pat=0; //获取输入字符串 cin>>str; int len=strlen(str); for(int i=0;i
发表评论
最新留言
很好
[***.229.124.182]2025年04月10日 15时14分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
80. Remove Duplicates from Sorted Array II
2021-05-09
83. Remove Duplicates from Sorted List
2021-05-09
410. Split Array Largest Sum
2021-05-09
开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?
2021-05-09
Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿
2021-05-09
《实战java高并发程序设计》源码整理及读书笔记
2021-05-09
Java开源博客My-Blog(SpringBoot+Docker)系列文章
2021-05-09
程序员视角:鹿晗公布恋情是如何把微博搞炸的?
2021-05-09
【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?
2021-05-09
Linux应用-线程操作
2021-05-09
多态体验,和探索爷爷类指针的多态性
2021-05-09
系统编程-进程间通信-无名管道
2021-05-09
记2020年初对SimpleGUI源码的阅读成果
2021-05-09
C语言实现面向对象方法学的GLib、GObject-初体验
2021-05-09
系统编程-进程-ps命令、进程调度、优先级翻转、进程状态
2021-05-09
为什么我觉得需要熟悉vim使用,难道仅仅是为了耍酷?
2021-05-09
一个支持高网络吞吐量、基于机器性能评分的TCP负载均衡器gobalan
2021-05-09
HDOJ2017_字符串统计
2021-05-09