1040. 有几个PAT(25



字符串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

错误代码:

/*************************************************************************> File Name: 1040.c> Author: YueBo > Function:有几个PAT> Created Time: 2016年11月19日 星期六 15时30分09秒************************************************************************/#include <stdio.h>
#include <stdlib.h>
#define NUM 1000000007
int main()
{char patString[100000], ch;int i, j, k, N = 0, sum = 0;while ((ch = getchar()) != '\n') {patString[N] = ch;N++;}for (i = 0; i < N; i++) {for (j = i+1; j < N; j++) {for (k = j+1; k < N; k++) {if (patString[i] == 'P' &&patString[j] == 'A' &&patString[k] == 'T') {sum++;sum = sum % NUM;}}}}printf("%d", sum);return 0;
}


这个庸俗的算法是地球人都能想到哒,下面观察几个量的变化,看能否想出一个新算法呢?
APPAPT(假设第一个位置是0,最后一个位置是5),aCnt表示A的数量,apCnt表示AP组合的数量,aptCnt表示APT组合的数量。

0--> pCnt = 0  paCnt = 0  patCnt = 0

1--> pCnt = 1  paCnt = 0  patCnt = 0

2--> pCnt  = 2 paCnt = 0  patCnt = 0

3--> pCnt = 2  paCnt = 0+2 patCnt = 0

4--> pCnt = 3  paCnt = 2 patCnt = 0

5--> pCnt = 3 patCnt = 2 patCnt = 2

结合下面的代码可理解上面的过程:

/*************************************************************************> File Name: 1040_1.c> Author: YueBo > Function:> Created Time: 2016年11月19日 星期六 23时40分11秒************************************************************************/#include <stdio.h>
#include <stdlib.h>#define NUM 1000000007
int main()
{long long pCnt = 0, paCnt = 0, patCnt = 0;char ch;while ((ch = getchar()) != '\n') {if (ch == 'P') {pCnt++;} else if (ch == 'A') {paCnt += pCnt;} else {patCnt += paCnt;patCnt %= NUM;}}printf("%lld", patCnt);return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(971):swiper插件使用

引入 2复制div部分 不要修改里面的文件 3复制css样式 4复制js 注意winows.addEventListener 加载后使用 5运行结果

1051. 复数乘法 (15)

复数可以写成(A Bi)的常规形式&#xff0c;其中A是实部&#xff0c;B是虚部&#xff0c;i是虚数单位&#xff0c;满足i2 -1&#xff1b;也可以写成极坐标下的指数形式(R*e(Pi))&#xff0c;其中R是复数模&#xff0c;P是辐角&#xff0c;i是虚数单位&#xff0c;其等价于三角…

ios企业应用发布流程

转载自:http://blog.csdn.net/justinjing0612/article/details/8758692留作备忘 企业发布app的 过程比app store 发布的简单多了&#xff0c;没那么多的要求&#xff0c;哈 但是整个工程的要求还是一样&#xff0c;比如各种像素的icon啊 命名规范啊等等。 下面是具体的流程 1、…

前端学习(975):bootstrap轮播图

1引入js和css 2引入html 2运行结果

linux3.0.4编译LDD中的scull全过程

按照惯例&#xff0c;我是应该先写一些本章的收获的&#xff0c;不过太晚了。 在看完第三章之后开始编译&#xff0c;错误一堆&#xff0c;几乎崩溃&#xff0c;幸亏经过不断的百度&#xff0c;总算解决了问题&#xff0c;我发现 我遇到问题比较多&#xff0c;算是集中七个龙珠…

前端学习(976):阿里百秀轮播图制作

引入js和css 复制html结构 结构调整

SAP RFC user 最小权限

今天作了几个rfc供外围系统调用&#xff0c;他们使用.net。 在.net调用时&#xff0c;提示“Lookup of function ET_PRDATA metadata failed for destination ZNMMPT_EXPORT_PR”。 这个错误&#xff0c;是由于GetFunctionMetadata()函数引起的&#xff0c;对此&#xff0c;NC0…

增强中获取屏幕值的一句很实用代码…

增强中获取屏幕值的一句很实用代码&#xff0c;直接获取屏幕字段值&#xff0c; 一般是在增强中用比如MIGO收货时&#xff0c;希望获取收货对应的A01这个值增强&#xff1a;BADI&#xff1a; MB_DOCUMENT_BADI MB_DOCUMENT_BADI 是在过账后了&#xff0c;不能报E类型消息&…

centOS7安装matlab2014a

1&#xff0c;网上下载matlab 2014a for linux; 2&#xff0c;挂载matlab_unix_2014a.iso到/mnt/matlab&#xff1b; mkdir /mnt/matlab2014a/ mount matlab_unix_2014a.iso /mnt/matlab2014a/ -o loop 3&#xff0c; cd /mnt/matlab2014a ./install4&#xff0c;选择第二个…

xdoj机器人ac

xdoj机器人100分 #include<stdio.h> int main() { char a[22][22]; int b[22][22]{0}; int h,l,f; scanf("%d%d%d",&h,&l,&f); getchar(); int i,j,c0; int flag0; for(i1;i<h;i) { for(j1;j<l;j) { a[i][j]getchar(); }getchar();} for(i1;…

最大子段和c(c语言实现)

1&#xff0c;题目 2&#xff0c;各种算法 暴力解决&#xff0c;就是所有的情况都遍历一遍&#xff0c;然后说&#xff0c;我找到最牛逼的啦 int MaxSubseqSum1(int A[], int N, int* pidxStart, int* pidxEnd) { int sum A[0], tempSum 0;int i, j, k;*pidxStart 0, *pid…

1007. Maximum Subsequence Sum (25)

Sample Input: 10 -10 1 2 3 4 -5 -23 3 7 -21 Sample Output: 10 1 4 错误代码如下&#xff1a; #include <stdio.h>int MaxSubseqSum4(int A[], int N, int* pstart, int* pend) {int i 0;int tempStart; //记录最大子段和位置int thisSum 0, sum 0;tempStart …

实验项目 3-4:一元多项式的乘法与加法运算

代码如下&#xff1a; /*************************************************************************> File Name: AddPoly.c> Author: YueBo> Mail: yuebowhu163.com> Created Time: 2016年12月17日 星期六 13时00分35秒***************************************…