阿里“天池”竞赛平台近日推出了一个新的挑战任务:对于给定的一串 DNA 碱基序列 tt,判断它在另一个根据规则生成的 DNA 碱基序列 ss 中出现了多少次。
首先,定义一个序列 ww:
displaystyle w_{i} = egin{cases}b, & i = 0\(w_{i-1} + a) mod n, & i > 0end{cases}wi={b,(wi−1+a)modn,i=0i>0
接下来,定义长度为 nn 的 DNA 碱基序列 ss(下标从 00 开始):
displaystyle s_{i} = egin{cases}A , & (L le w_{i} le R) land (w_{i} mathrm{mod} 2 = 0)\T , & (L le w_{i} le R) land (w_{i} mathrm{mod} 2 = 1)\G , & ((w_{i} < L) lor (w_{i} > R)) land (w_{i} mathrm{mod} 2 = 0)\C , & ((w_{i} < L) lor (w_{i} > R)) land (w_{i} mathrm{mod} 2 = 1)end{cases}si=⎩⎪⎪⎪⎨⎪⎪⎪⎧A,T,G,C,(L≤wi≤R)∧(wi mod 2=0)(L≤wi≤R)∧(wi mod 2=1)((wi<L)∨(wi>R))∧(wi mod 2=0)((wi<L)∨(wi>R))∧(w