PTA 乙级 1040 有几个PAT (25分) C/C++

 注意本题A和T是可以重复使用的,只有P不可重复使用

暴力算法很容易超时

C/C++

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int p = 0, a = 0;
 8     long sum = 0;
 9     string str;
10     cin >> str;
11     for (int i = 0; i < str.length(); ++i){
12         if (str[i] == 'P')      ++p;           //统计A前面的P的个数
13         else if (str[i] == 'A') a += p;        //T前面所有的A前面P的个数相加
14         else if (str[i] == 'T') sum += a;      //出现PAT总数
15     }
16     cout << sum % 1000000007;   //按题目要求取余
17 
18 }

猜你喜欢

转载自www.cnblogs.com/SCP-514/p/13383358.html