zoukankan      html  css  js  c++  java
  • PAT L3-020 至多删三个字符

    https://pintia.cn/problem-sets/994805046380707840/problems/994805046946938880

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串?

    输入格式:

    输入在一行中给出全部由小写英文字母组成的、长度在区间 [4, 1] 内的字符串。

    输出格式:

    在一行中输出至多删掉其中 3 个字符后不同字符串的个数。

    输入样例:

    ababcc
    

    输出样例:

    25
    

    提示:

    删掉 0 个字符得到 "ababcc"。

    删掉 1 个字符得到 "babcc", "aabcc", "abbcc", "abacc" 和 "ababc"。

    删掉 2 个字符得到 "abcc", "bbcc", "bacc", "babc", "aacc", "aabc", "abbc", "abac" 和 "abab"。

    删掉 3 个字符得到 "abc", "bcc", "acc", "bbc", "bac", "bab", "aac", "aab", "abb" 和 "aba"。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e7 + 10;
    long long dp[maxn][5];
    string s;
    
    int main() {
        cin >> s;
        int len = s.length();
        dp[1][0] = dp[1][1] = 1;
        dp[0][2] = dp[0][3] = 0;
        for(int i = 2; i <= len; i ++) {
            dp[i][0] = 1;
            for(int j = 1; j <= 3; j ++) {
                dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
                if(s[i - 1] == s[i - 2] && j == 1) dp[i][j] -= 1;
                else if(s[i - 1] == s[i - 2] && j == 2) dp[i][j] -= dp[i - 2][1];
                else if(s[i - 1] == s[i - 2] && j ==3)  dp[i][j] -= dp[i - 2][2];
    
                if(i >= 3 && s[i - 1] == s[i - 3] && s[i - 1] != s[i - 2] && j ==2) dp[i][j] -= 1;
                else if(i >= 3 && s[i - 1] == s[i - 3] && s[i - 1] != s[i - 2] && j == 3) dp[i][j] -= dp[i - 3][1];
    
                if(i >= 4 && s[i - 1] == s[i - 4] && s[i - 1] != s[i - 2] &&s[i - 1] != s[i - 3] && j == 3) dp[i][j] -= 1;
            }
        }
        long long ans = dp[len][0] + dp[len][1] + dp[len][2] + dp[len][3];
        printf("%lld
    ", ans);
        return 0;
    }
    

      

  • 相关阅读:
    redis命令
    eclipse error pages 打红X的解决方法
    探究adroid活动
    Javascript基本算法演练 Seek and Destroy
    c语言结构体排序示例
    android studio 环境配置
    git学习
    栈用于2进制转换10进制
    html和js
    js
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10604500.html
Copyright © 2011-2022 走看看