蓝桥杯算法入门(Python) 课件 8-5DP例题.pptxVIP

  • 1
  • 0
  • 约1.61千字
  • 约 7页
  • 2026-08-23 发布于山东
  • 举报

蓝桥杯算法入门(Python) 课件 8-5DP例题.pptx

罗勇军8.5DP例题蓝桥杯算法入门

例题8.7子串简写LangqiaoOJ35142问题描述:一种很新的简写方法:对于一个字符串,只保留首尾字符,将首尾字符之间的所有字符用这部分的长度代替。例如internationalization简写成i18n,Kubernetes简写成K8s,Lanqiao简写成L5o等。在本题中,我们规定长度大于等于K的字符串都可以采用这种简写方法(长度小于K的字符串不配使用这种简写)。给定一个字符串S和两个字符c1和c2,请你计算S有多少个以c1开头,c2结尾的子串可以采用这种简写?输入:第一行包含一个整数K。第二行包含一个字符串S和两个字符c1和c2。输出:一个整数代表答案。

3定义状态dp[]:dp[i]表示到s[1]~s[i]中首字母c1出现的次数。DP转移:遍历s时,若出现尾字母c2,那么答案累加dp[i-k+1]。只需遍历一次字符串,计算复杂度为O(n)。

4k=int(input())s,c1,c2=input().split()len_s=len(s)s=0+s#s[0]不用,从s[1]开始存字符串,容易理解ans=0dp=[0]*(len_s+1)foriinrange(1,len_s+1):ifs[i]==c1:dp[i]=dp[i

文档评论(0)

1亿VIP精品文档

相关文档