首页 > 其他 > 详细

字符串中子序列出现次数【模板题】

时间:2020-01-18 23:06:50      阅读:249      评论:0      收藏:0      [点我收藏+]

形如:题意:给一个字符串,求子序列“xyz...x”出现的次数

两道板子题:https://ac.nowcoder.com/acm/contest/3947/I

 https://ac.nowcoder.com/acm/contest/87/B【注意:是否区分大小写】

技术分享图片

 

 

 

 

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 #define int long long
 5 #define mod 20010905 
 6 int dp[66];
 7 signed main(){
 8     string s;
 9     cin>>s;
10     
11     for(int i=0;i<s.size();i++){
12         s[i]=tolower(s[i]);
13         dp[8]=(dp[8]+(s[i]==u)*dp[7])%mod;
14         dp[7]=(dp[7]+(s[i]==o)*dp[6])%mod;
15         dp[6]=(dp[6]+(s[i]==y)*dp[5])%mod;
16         dp[5]=(dp[5]+(s[i]==e)*dp[4])%mod;
17         dp[4]=(dp[4]+(s[i]==v)*dp[3])%mod;
18         dp[3]=(dp[3]+(s[i]==o)*dp[2])%mod;
19         dp[2]=(dp[2]+(s[i]==l)*dp[1])%mod;
20         dp[1]=(dp[1]+(s[i]==i))%mod;
21     }
22     cout<<dp[8];
23     return 0;
24 }

技术分享图片

 

 

 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/pengge666/p/12210472.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!