欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1040 有几个PAT (25分)

程序员文章站 2022-06-08 08:09:20
...

1040 有几个PAT (25分)

#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main(){
    string str;
    getline(cin,str);
    int len=str.size();
    int leftnump[len]={0},rightnumt[len]={0};
    int ans=0;
    if(str[0]=='P')leftnump[0]=1;
    for(int i=1;i<len;i++){
        if(str[i]=='P')leftnump[i]=leftnump[i-1]+1;
        else leftnump[i]=leftnump[i-1];

    }
    if(str[len-1]=='T')rightnumt[len-1]=1;
    for(int i=len-2;i>=0;i--){
        if(str[i]=='T')rightnumt[i]=rightnumt[i+1]+1;
        else rightnumt[i]=rightnumt[i+1];
        if(str[i]=='A') ans=(ans+rightnumt[i]*leftnump[i])%1000000007;
    }
    printf("%d\n",ans);
    return 0;
}

第一次,参考算法笔记完成,30min