躲藏

链接:https://ac.nowcoder.com/acm/problem/15669
来源:牛客网

题目描述

XHRlyb和她的小伙伴Cwbc在玩捉迷藏游戏。
Cwbc藏在多个不区分大小写的字符串中。
好奇的XHRlyb想知道,在每个字符串中Cwbc作为子序列分别出现了多少次。
由于Cwbc可能出现的次数过多,你只需要输出每个答案对2000120420010122取模后的结果。
聪明的你在仔细阅读题目后,一定可以顺利的解决这个问题!

输入描述:

输入数据有多行,每行有一个字符串。

输出描述:

输出数据应有多行,每行表示一个答案取模后的结果。

示例1

输入

  1. Cwbc

输出

  1. 1

说明

Cwbc作为子序列仅出现了1次。

示例2

输入

  1. acdcecfwgwhwibjbkblcmcnco

输出

  1. 81

说明

Cwbc作为子序列出现了34=81次。

备注:

每行字符串长度不超过2×105,字符串总长度不超过106

f[4] = (f[4] + (s[i] ==′ c′)∗f[3]) % Mod

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. #include <string>
  5. #include <math.h>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <stack>
  9. #include <queue>
  10. #include <set>
  11. #include <map>
  12. #include <sstream>
  13. const int INF=0x3f3f3f3f;
  14. typedef long long LL;
  15. const int mod=1e9+;
  16. const LL MOD=;
  17. const int maxn=1e5+;
  18. using namespace std;
  19.  
  20. string str1;
  21. string str2="cwbc";
  22. LL dp[];
  23.  
  24. int main()
  25. {
  26.  
  27. while(cin>>str1)
  28. {
  29. memset(dp,,sizeof(dp));
  30. for(int i=;i<=str1.size();i++)
  31. {
  32. str1[i-]=tolower(str1[i-]);
  33. for(int j=str2.size();j>=;j--)
  34. {
  35. dp[j]=(dp[j]+(str1[i-]==str2[j-])*(j==?:dp[j-]))%MOD;
  36. }
  37. }
  38. cout<<dp[str2.size()]<<endl;;
  39. }
  40.  
  41. return ;
  42. }

一道类似题

I love you

链接:https://ac.nowcoder.com/acm/contest/3947/I
来源:牛客网

题目描述

此时相望不相闻,愿逐月华流照君。

一纸情书,到底蕴含了多少倍的爱情呢?

I love you, not only for what you are, but for what I am when I am with you.

输入描述:

  1. 共一行:一封若干个字符的情书(大小写不敏感)。
    情书不会超过684594个字符(大写、小写字母)。

输出描述:

  1. 共一行:包含一个整数,即iloveyou在情书中作为子序列出现的次数。
    由于答案可能很大,请输出对20010905取模后的值。
 
示例1

输入

  1. IloveyouNotonlyforwhatyouareButforwhatIamWhenIamwithyouIloveyouNotonlyforwhatYouhavemadeofyourselfButforwhatYouaremakingofme

输出

  1. 2864
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <iostream>
  4. #include <string>
  5. #include <math.h>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <stack>
  9. #include <queue>
  10. #include <set>
  11. #include <map>
  12. #include <sstream>
  13. #include <ctime>
  14. const int INF=0x3f3f3f3f;
  15. typedef long long LL;
  16. const int mod=1e9+;
  17. const LL MOD=;
  18. const double PI = acos(-);
  19. const double eps =1e-;
  20. #define Bug cout<<"---------------------"<<endl
  21. const int maxn=1e5+;
  22. using namespace std;
  23.  
  24. string str1;
  25. string str2="iloveyou";
  26. LL dp[];
  27.  
  28. int main()
  29. {
  30. #ifdef DEBUG
  31. freopen("sample.txt","r",stdin);
  32. #endif
  33. // ios_base::sync_with_stdio(false);
  34. // cin.tie(NULL);
  35.  
  36. while(cin>>str1)
  37. {
  38. memset(dp,,sizeof(dp));
  39. for(int i=;i<=str1.size();i++)
  40. {
  41. // if(!((str1[i-1]>='A'&&str1[i-1]<='Z')||(str1[i-1]>='a'&&str1[i-1]<='z'))) continue;
  42. str1[i-]=tolower(str1[i-]);
  43. for(int j=str2.size();j>=;j--)
  44. {
  45. dp[j]=(dp[j]+(str1[i-]==str2[j-])*(j==?:dp[j-]))%MOD;
  46. }
  47. }
  48. cout<<dp[str2.size()]<<endl;;
  49. }
  50.  
  51. return ;
  52. }

队友写的:

  1. //MADE BY Y_is_sunshine;
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <cstring>
  6. #include <sstream>
  7. #include <cstdio>
  8. #include <vector>
  9. #include <string>
  10. #include <cmath>
  11. #include <queue>
  12. #include <stack>
  13. #include <map>
  14. #include <set>
  15.  
  16. #define INF 0x3f3f3f3f
  17. #define MAXN 700005
  18.  
  19. typedef long long ll;
  20.  
  21. const ll mod = ;
  22. const double PI = acos(-);
  23.  
  24. using namespace std;
  25.  
  26. int N, M, K;
  27.  
  28. ll dp[][MAXN];
  29.  
  30. int main(void)
  31. {
  32.  
  33. string s;
  34. cin >> s;
  35. //transform(s.begin(), s.end(), s.begin(), tolower);
  36.  
  37. s.insert(s.begin(), ' ');
  38. //cout << s << '\n';
  39.  
  40. string ss = " iloveyou";
  41.  
  42. N = s.size();
  43. M = ss.size();
  44.  
  45. for (int j = ; j <= N; j++) {
  46. if (s[j] >= 'A' && s[j] <= 'Z')
  47. s[j] += ;
  48. dp[][j] = ;
  49. }
  50. for (int i = ; i <= M; i++) {
  51. for (int j = ; j < N + ; j++) {
  52. if (s[j - ] == ss[i - ]) {
  53. dp[i][j] = dp[i][j - ] + dp[i - ][j - ];
  54. }
  55. else {
  56. dp[i][j] = dp[i][j - ];
  57. }
  58. dp[i][j] %= mod;
  59. }
  60. }
  61.  
  62. cout << dp[M][N] << '\n';
  63.  
  64. return ;
  65. }

-

字符串中子序列出现次数(dp)的更多相关文章

  1. BZOJ 2754([SCOI2012]喵喵叫的星球-统计序列的后缀阵列中子序列出现次数)

    2754: [SCOI2012]喵喵叫的星球 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 805  Solved: 380 [id=2754&qu ...

  2. Distinct Subsequences(不同子序列的个数)——b字符串在a字符串中出现的次数、动态规划

    Given a string S and a string T, count the number of distinct subsequences ofT inS. A subsequence of ...

  3. 区间和序列上的dp

    区间上的dp状态设计最基本的形式: \(F[i]\)表示以i结尾的最优值或方案数. \(F[i][k]\)表示以i结尾附加信息为k的最优值或方案数. 当然可以有多维附加信息. 转移的话往往是枚举上一个 ...

  4. java小练习--获取abc字符串在整个字符串中出现的次数

    在下面一行字符串中获取abc字符串在整个字符串中出现的次数. "wabcerabctyabcuiabcabcqq" 思路:使用indexOf和substring(); 源码如下: ...

  5. str_repeat() 函数把字符串重复指定的次数。

    str_repeat() 函数把字符串重复指定的次数. str_repeat(string,repeat) 参数 描述 string 必需.规定要重复的字符串. repeat 必需.规定字符串将被重复 ...

  6. 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...

  7. Java实现统计某字符串在另一个字符串中出现的次数

    面试时会经常考这样的题目,估计也不让使用正则表达式.还好这个算法还算简单,不过在草稿纸上写难免会出现运行异常,好吧,面试官赢了,乃们屌丝就实实在在的把代码码出来吧. 谢谢“心扉”对我代码bug的纠正, ...

  8. mysql 统计一个字符在字符串中出现的次数

    CREATE  FUNCTION `str_pcount`(str varchar(255),p varchar(255)) RETURNS int(11)BEGIN    #统计一个字符在字符串中出 ...

  9. python取一个字符串中最多出现次数的词

    #-*- coding:utf-8 -*- #取一个字符串中最多出现次数的词 import re from collections import Counter my_str = "&quo ...

随机推荐

  1. spring-@ResponseBody返回时的编码处理

    下面是一个解决方案 @RequestMapping(value = "/queryall", method = GET, produces = "application/ ...

  2. 大数据之虚拟机配置和环境准备及hadoop集群搭建

    一.VMnet1和VMnet8路由器 VMware-workstation软件选择默认安装时,会自动创建VMnet1和VMnet8路由器设备.(安装失败使用CCleaner清理vm软件) VMnet1 ...

  3. C++ 管道

    // PipeServer.cpp : Defines the entry point for the console application. // #include "stdafx.h& ...

  4. 下页小希学MVC5+EF6.2 学习记录三

      目的:1 学习mvc+ef 2  写下日记也是对自己的督促 期待已久的EF终于来了. 学完本篇文章,你将会掌握基于EF数据模型的完整开发流程. 本次将会完成EF数据模型的搭建和使用. 基于这个模型 ...

  5. springboot (2.0以上)连接mysql配置

    pom <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java&l ...

  6. Hibernate--(二)增删改查

    1.增删改查: public class Test { public static void main(String[] args) { SessionFactory sf = new Configu ...

  7. 面试题(7)之 leetcode-003

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...

  8. 由于TableView的Section的头部和尾部高度设置的不规范引起的部分Section中的图片无法正常显示

    当tableview的组的头部和尾部的高度设置如下时: -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(N ...

  9. 关于torch.flatten的笔记

    先看函数参数: torch.flatten(input, start_dim=0, end_dim=-1) input: 一个 tensor,即要被“推平”的 tensor. start_dim: “ ...

  10. VUE.js入门学习(5)- 插槽和作用域插槽

    插槽: (1)用法 以前的写法:如果内容很多的话,就很烂了- 插槽写法:(PS:组建名不能用保留关键字) (2)具名插槽 (3)作用域插槽 必须template开始和结尾,这个插槽要声明我从子组建接收 ...