首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最大允许事件之间的序列中计数子序列数

在最大允许事件之间的序列中计数子序列数
EN

Stack Overflow用户
提问于 2021-06-29 10:22:48
回答 1查看 141关注 0票数 0

给定事件的主序列(例如,A->B->A->B->B)、子序列(A->B)和允许事件之间的最大允许事件(n),我想计算主序列中的子序列(N)数目。

例如,

N=2 for n=0 (第一A ->第一B,第二A ->第二B)

N=3 for n=1 (第一A ->第一B,第二A ->第二B,第二A ->第三B)

N=4 for n=2 (第一A ->第一B,第二A ->第二B,第二A ->第三B,第一A ->第二B)

N=5 for n=3 (第一A ->第一B,第二A ->第二B,第二A ->第三B,第一A ->第二B,第一A ->第三B)

这个问题有一个有效的算法吗?我的问题的主要顺序可以是长的,我有许多子序列可计数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 13:51:35

您可能会得到一些正则表达式的结果,但这取决于您的事件定义有多复杂。或者,你也可以选择这样的方式

代码语言:javascript
复制
result = [(first,first+steps+1)
          for steps in range(len(seq)-1) for first in range(len(seq)-steps-1)
          if seq[first]==target[0] and seq[first+steps+1]==target[1]]

>>> result
[(0, 1), (2, 3), (2, 4), (0, 3), (0, 4)]

虽然我不知道它对大型数据集是否有效

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68176871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档