zoukankan      html  css  js  c++  java
  • PAT乙级1040 有几个PAT

     题目:

    1040 有几个PAT (25分)
     

    字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。

    现给定字符串,问一共可以形成多少个 PAT

    输入格式:

    输入只有一行,包含一个字符串,长度不超过1,只包含 PAT 三种字母。

    输出格式:

    在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。

    输入样例:

    APPAPT
    

    输出样例:

    2

    思路:
    递推处理左边P的个数,递推处理右边T的个数

     1 #include <iostream>
     2 #include <cstring>
     3 #include <algorithm>
     4 
     5 
     6 using namespace std ;
     7 
     8 const int N = 100010, mod = 1e9+7 ;
     9 int s[N] ;
    10 
    11 int main(){
    12     string str1 ;
    13     cin >> str1 ;
    14     
    15     int la = str1.size() ;
    16     for(int i=0;i<la;i++){
    17         if(i>0) s[i] = s[i-1] ;
    18         if(str1[i] == 'P'){
    19             s[i] ++ ;
    20         }
    21     }
    22     int lt = 0, ans = 0 ;
    23     for(int i=la-1;i>=0;i--){
    24         if(str1[i] == 'A'){
    25             ans = (long long)(ans + s[i]*lt)%mod ;
    26         }else if(str1[i] == 'T'){
    27             lt ++ ;
    28         }
    29     }
    30     cout << ans << endl ;
    31     return 0 ;    
    32 } 
  • 相关阅读:
    2019.6.30 Spring注解 bean后置处理器和属性赋值
    2019.6.29 Spring注解-Bean的注册
    2019.6.28 Spring注解
    boost基础环境搭建
    动态规划入门一:钢条切割问题
    《剑指offer》读书笔记
    字符串的全排列
    西山居递归面试题
    常见的数据结构
    832. Flipping an Image
  • 原文地址:https://www.cnblogs.com/gulangyuzzz/p/12028454.html
Copyright © 2011-2022 走看看