(PAT乙级)1040 有几个PAT(C语言实现)

总结:

1、思路上出现了偏差:我原来的思路是找到P的位置,然后从P之后开始计数A和T有多少个,个数相乘即为此P对应的PAT数。但忘记了PAT的顺序性,PTA,按我的想法最后PAT数是1,实际上应该是0。所以为了保障顺序性,标记性的字符选择中间的‘A’,统计A前的P个数和A后的T个数。

2、按照以上改正思路,找到A然后再统计P、T个数,会使用3重循环,时间复杂度为O(n3),所以需要在改进思路。先统计遍历字符串后T的个数,然后从第一个字符开始到找到A前,遇到P,countp++;遇到T,countt--。这样也可以统计出A前的P个数和A后的T个数。

3、关于输出取模的事情:因为整型的输出范围是0~2147483648.countp*countt有可能溢出,所以需要对成绩2取模,每次结果的和也有可能溢出,所以需对每次结果和取模,总之取两次模的目的在于防止数据溢出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值