多少個PAT

weixin_34321977發表於2018-05-22

思路:

每個A左右的P/T的個數之積即是PAT的個數

一開始的想法是將每個A所對應的PAT個數寫到一張表a[1000]中,然後遍歷求和。但是還有更簡單的方法:

#include <bits/stdc++.h>
using namespace std;
//int T[N]={0};
int N=10000;
int main() {
  char a[N]="APPAPTAT";
  //scanf("%s",a);
  int PA=0,PAT=0,A=0,i=0;
  long long count=0;
  for(i=0;i<strlen(a);i++){
     if(a[i]=='P'){
         PA++;
     }
     else if(a[i]=='A'){
        A=PA;
     }
     else{
         PAT+=A;
     }
  }
  printf("%ld\n",PAT%1000000007);
  return 0;
}

相關文章