zoukankan      html  css  js  c++  java
  • PAT-B 1040. 有几个PAT(25)

    1040. 有几个PAT(25)

    时间限制
    120 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CAO, Peng

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

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

    输入格式:

    输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

    输出格式:

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

    输入样例:
    APPAPT
    
    输出样例:
    2
    分析:一开始没仔细看(没认真看),想着根据木桶原理就可以解决问题的,但写完一看是错的,
    一看题目才明白,他是只要满足P A T的顺序就可以视为一个PAT,于是就想到了可以从字符串后面开始遍历,看了大神的算法,得出结论只要P后面有AT就可以组成一个PAT ,然后找AT的个数,只要一个A后面有T就全部加上就可以满足所有的AT组合,只要找到P就加上当前状态的AT的个数。
    要注意由于数据比较大用signed int(0-2^31-1)可能会导致结果已溢出 所以要采用long类型的数据。
    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
      string a;
      long  tnum=0;
      long  atnum=0;
      long  patnum=0; 
      
      cin>>a;
      for(int i=a.size();i>=0;i--){
        if(a[i]=='T'){
          tnum++;
        } else if(a[i]=='A'){
          atnum+=tnum;
        }else if(a[i]=='P'){
          patnum+=atnum;
        }
      }
    
      cout<<patnum%1000000007; 
      
      
      return 0;
    }

    
    
  • 相关阅读:
    数据挖掘常用算法
    helloworld
    sqlserver 变量级基本语法
    存储过程
    动态代理jdk 和cglib
    创建表添加约束
    sqlserver 子查询
    创建数据库
    javaScript实现同意等待——心得
    JavaScript关于不要复制黏贴代码的心得
  • 原文地址:https://www.cnblogs.com/lingluan533/p/12537313.html
Copyright © 2011-2022 走看看