字符串中子序列出现次数
题目链接
题意,给一个字符串,求子序列“cwbc”出现的次数
分析:
dp,滚动数组
令 f[i][j],(j = 1,2,3,4) 表示前 i 个字符中,匹配了字符串”cwbc” 的前多少位,那么有转移方程:
f[i][1] = (f[i−1][1] + (s[i] ==′ c′)) % Mod
f[i][2] = (f[i−1][2] + (s[i] ==′ w′)∗f[i−1][1]) % Mod
f[i][3] = (f[i−1][3] + (s[i] ==′ b′)∗f[i−1][2]) % Mod
f[i][4] = (f[i−1][4] + (s[i] ==′ c′)∗f[i−1][3]) % Mod
内存超标。使用滚动数组优化开销:
f[1] = (f[1] + (s[i] ==′ c′)) % Mod
f[2] = (f[2] + (s[i] ==′ w′)∗f[1]) % Mod
f[3] = (f[3] + (s[i] ==′ b′)∗f[2]) % Mod
f[4] = (f[4] + (s[i] ==′ c′)∗f[3]) % Mod
代码中动规的第二维正着来反着来都没区别,因为互有关联的21,32,43都是二者只可能有一个执行的,而14虽然都有可能执行,但互不影响
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int inf=1<<30; 4 typedef long long ll; 5 const double pi=acos(-1); 6 const int mod=2000120420010122; 7 const int maxn=2e5+7; 8 ll dp[5]; 9 int main(){ 10 string s; 11 while(cin>>s){ 12 memset(dp,0,sizeof(dp)); 13 for(int i=0;i<s.length();i++){ 14 s[i]=tolower(s[i]); 15 dp[4]=(dp[4]+(s[i]=='c')*dp[3])%mod; 16 dp[3]=(dp[3]+(s[i]=='b')*dp[2])%mod; 17 dp[2]=(dp[2]+(s[i]=='w')*dp[1])%mod; 18 dp[1]=(dp[1]+(s[i]=='c'))%mod; 19 } 20 cout<<dp[4]<<endl; 21 } 22 return 0; 23 }
转载于:https://www.cnblogs.com/qingjiuling/p/10429032.html
字符串中子序列出现次数相关推荐
- Python学习笔记D4(字符串和序列)
Python学习笔记D4(字符串和序列) 序列 list()作为一个方法存在两个形态,一个有参数一个没参数 list():不带参数,返回一个空的列表 list([iterable]):返回一个迭代器 ...
- 编写程序,统计一个长度为2的字符串在另一个字符串中出现的次数
<程序设计基础-c语言>杨莉 刘鸿翔 ISBN-978-7-03-032903-5 p137 习题5 4.统计一个长度为2的字符串在另一个字符串中出现的次数.例如,假定输入的字符串为:as ...
- 求一个字符串中连续出现次数最多的子串
http://blog.csdn.net/imcdragon/article/details/6838565解答二 http://hi.baidu.com/icyday315/item/040aada ...
- python统计字符在文件中出现的次数_python字符串中字符出现次数(python获取字符串个数)...
今天要说的是Python的字符串函数还是很方便的,只需要调用 count() 方法即可. 最近,我在一个网站上看到了一个自然语言处理课程.我详细解释了一些方法的使用,用例很容易理解,所以我想通过我的博 ...
- String案例 获取一个字符串在另一个字符串中出现的次数(两种方法)
/*思路:定义1个计数器和1个截取后的Str-->判断有无SS-->有就截取并计数-->直到截取完没有ss就停止*/ package Day12;/* 练习2 获取一个字符串在另一个 ...
- C语言试题四十八之该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。
1. 题目 请编写一个函数function,它的功能是:该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C ...
- 2027. 转换字符串的最少操作次数
2027. 转换字符串的最少操作次数 给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' . 一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 'O ...
- 统计一个字符在另一个字符串中出现的次数
文章目录 1.一个字符在另一个字符串中出现的次数 2.测试 3.输出 1.一个字符在另一个字符串中出现的次数 /*** showTime 懂得都懂 <br>* @param findStr ...
- 字符串查找字符出现次数_查找字符串作为子序列出现的次数
字符串查找字符出现次数 Description: 描述: It's a popular interview question based of dynamic programming which ha ...
最新文章
- 如此通俗的分布式锁讲解,如果还搞不定那就...
- gdb coredump
- c 普通的文本变成注释文本的快捷键_IntelliJ Idea 常用快捷键列表 (2019年总结)
- 修改Transformer结构,设计一个更快更好的MLM模型
- Java Word break analysis
- jsonview浏览器插件 查看格式化json数据
- kali Linux 没有ip解决办法
- html5中关于input使用方法的改变
- 高数:自然数的无穷大符号--->n_max(高等数学的唯一根基所在)
- php word 生成图片,PHP导出成word,带图片样式
- BERT模型深度解析
- java jive歌词翻译_Java Jive歌词 Java JiveLrc歌词
- 5118站长工具箱:SEO数据分析浏览器插件 - 叶涛的博客
- 机顶盒ttl无法输入_连接TTL线后无法输入代码、不跑码乱码的解决方法
- ROS1云课→29如何借助导航实现走迷宫机器人
- C语言中的Sleep函数
- Spring入门第一讲——Spring框架的快速入门
- linux环境nginx从下载到安装
- App开发中适用的短信SDK
- vue-quill-editor图片缩放处理