1040 有几个PAT (25 分)
思路:我的大致思路是这样的,在接收这一组字符串的时候先数一下T有几个;
然后在遍历的时候出现T就T的数量减1,出现P就P的数量加1,然后出现A就统计这里有几个PAT;
举个例子:
比如说TTPATP一开始T有三个,然后遍历的时候第一次T减1,第二次T减1(还剩1个),第三次出现P了 P的数量加1;
然后第四次出现A了,就统计这一组有1*1=1个。
代码如下:
#include<string.h>
int main()
{
int i;
long int countt=0,sum=0,countp=0;
char a[100001];
if(scanf("%s",a));
for(i=0;i<strlen(a);i++)
if(a[i]=='T')
countt++;
for(i=0;i<strlen(a);i++)
{
if(a[i]=='P')
countp++;
else if(a[i]=='A')
sum=(sum+(countp*countt)%1000000007)%1000000007;
else
{
countt--;
if(!countt)
break;
}
}
printf("%d",sum);
}