(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取模,每次结果的和也有可能溢出,所以需对每次结果和取模,总之取两次模的目的在于防止数据溢出。

猜你喜欢

转载自blog.csdn.net/qq_40840749/article/details/82251466
今日推荐