pat 乙级 1040. 有几个PAT(25)
来源:互联网 发布:cmd查找他机mac 编辑:程序博客网 时间:2024/05/16 17:39
代码注释 很详细 :
#include <stdio.h>#include <iostream>#include <cstdlib>#include <cmath>#include <cctype>#include <string>#include <cstring>#include <algorithm>#include <ctime>using namespace std;char pat[100005];int dp_p[100005],dp_a[100005],dp_t[100005];int main() { // 思路 如下: // A P P A P T gets(pat); // dp_p 0 1 2 2 3 3 (有几个P) int len=strlen(pat); // dp_a 0 0 0 2 2 2 (有几个PA) if (pat[0]=='P') { // dp_t 0 0 0 0 0 2 (有几个PAT) dp_p[0]=1; // 所以: } // 若当前位置为P dp_p[i] = dp_p[i-1] + 1 else dp_p[0]=0; // 否则 dp_p[i] = dp_p[i-1] // for (int i=1;i<len;i++) { // 若当前位置为A dp_a[i] = dp_a[i-1] + dp_p[i-1] if (pat[i]=='P') { // 否则 dp_a[i] = dp_a[i-1] dp_p[i]=(dp_p[i-1]+1)%1000000007; // } // 若当前位置为T dp_t[i] = dp_t[i-1] + dp_a[i-1] else dp_p[i]=(dp_p[i-1])%1000000007; // 否则 dp_t[i] = dp_t[i-1] } dp_a[0]=0; for (int i=1;i<len;i++) { if (pat[i]=='A') { dp_a[i]=(dp_a[i-1]+dp_p[i-1])%1000000007; } else dp_a[i]=(dp_a[i-1])%1000000007; } dp_t[0]=0; for (int i=1;i<len;i++) { if (pat[i]=='T') { dp_t[i]=(dp_t[i-1]+dp_a[i-1])%1000000007; } else dp_t[i]=(dp_t[i-1])%1000000007; } cout<<dp_t[len-1]; return 0;}
提交代码:
阅读全文
0 0
- PAT乙级 有几个PAT(25)
- PAT乙级—1040. 有几个PAT(25)-native
- 1040. 有几个PAT(25)-PAT乙级真题
- PAT乙级.1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级 1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级 1040. 有几个PAT(25)--数学问题
- [PAT乙级]1040. 有几个PAT(25)
- PAT乙级1040. 有几个PAT(25)
- pat 乙级 1040. 有几个PAT(25)
- PAT 乙级 1040. 有几个PAT(25)
- PAT乙级1040. 有几个PAT(25)
- PAT乙级真题 1040. 有几个PAT(25)
- 1040. 有几个PAT(25) PAT乙级真题
- 1040. 有几个PAT(25)PAT乙级&&1093. Count PAT's (25) PAT甲级
- [PAT-乙级]1040.有几个PAT
- 【PAT】1040. 有几个PAT(25)
- C语言之断言
- c++中的标准库类型vector
- 使用ffmpeg获取关键帧图片
- 线性代数的本质(Essense Of Linear Algebra)[4]
- 513. Find Bottom Left Tree Value
- pat 乙级 1040. 有几个PAT(25)
- navicat for mysql 10.0.11 简体免安装中文破解版
- 倍增法求最近公共祖先 lca
- two-sum
- Matlab 定义函数的几种方法
- 练习2
- 9.6 今天学到了什么
- Android学习资源
- 一脸懵逼学习oracle(图形化界面操作---》PLSQL图形化界面)