zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise 1040 有几个PAT(DP)

    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

    题目链接:PAT 1040

    题意简单就不多说了,反正看到这题感觉是用DP,因为看题目的意思又取余又计数的……然后想了一下,用dp[k][i]表示当前到i位置时收集到了P(0)、PA(1)、PAT(2)三个字符的个数。

    然后感觉应该有这样的递推式:

    dp[0][i] = (dp[0][i - 1] + 1) % mod;
    dp[1][i] = (dp[1][i] + dp[0][i - 1]) % mod;
    dp[2][i] = (dp[2][i] + dp[1][i - 1]) % mod;

    然后交了一发居然过了,不知道是数据弱还是这个递推式没有问题……

    代码:

    #include <stdio.h>
    #include <bits/stdc++.h>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define LC(x) (x<<1)
    #define RC(x) ((x<<1)+1)
    #define MID(x,y) ((x+y)>>1)
    #define CLR(arr,val) memset(arr,val,sizeof(arr))
    #define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
    typedef pair<int, int> pii;
    typedef long long LL;
    const double PI = acos(-1.0);
    const int N = 1e5 + 7;
    const int mod = 1000000007;
    char s[N];
    int dp[3][N];
    
    int main(void)
    {
    	int i, len;
    	while (~scanf("%s", s + 1))
    	{
    		CLR(dp, 0);
    		len = strlen(s + 1);
    
    		for (i = 1; i <= len; ++i)
    		{
    			dp[0][i] = dp[0][i - 1];
    			dp[1][i] = dp[1][i - 1];
    			dp[2][i] = dp[2][i - 1];
    			if (s[i] == 'P')
    				dp[0][i] = (dp[0][i - 1] + 1) % mod;
    			else if (s[i] == 'A')
    				dp[1][i] = (dp[1][i] + dp[0][i - 1]) % mod;
    			else if (s[i] == 'T')
    				dp[2][i] = (dp[2][i] + dp[1][i - 1]) % mod;
    		}
    		printf("%d
    ", dp[2][len]);
    	}
    	return 0;
    }
  • 相关阅读:
    20145310《信息安全系统设计基础》第二周学习总结
    20145310《信息安全系统设计基础》第一周学习总结
    20145310 第0周《信息安全系统设计基础》学习总结
    课程总结
    20145310《Java程序设计》第5次实验报告
    20145310 《Java程序设计》第10周学习总结
    20145310 《Java程序设计》第9周学习总结
    20145310《Java程序设计》第4次实验报告
    20145310《Java程序设计》第3次实验报告
    git的安装以及遇到的问题
  • 原文地址:https://www.cnblogs.com/Blackops/p/6257790.html
Copyright © 2011-2022 走看看