公共子序列
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
公共子序列
题目描述
学习动态规划算法时遇到经典的最长公共子序列问题是这样的:给定序列 ,其子序列是从该序列中删去若干元素后得到的序列。一个包含 个元素的序列有 个子序列。给定两个序列 和,请设计算法找出 和 的一个最长公共子序列。
本题并不是要你给出这个问题的解,而是帮助判题的老师解决一题多解的问题 —— 这个问题的解可能是不唯一的。例如给定 catcga
和 gtaccgtca
,最长公共子序列的长度是 4,tcga
是一个解,ctca
也是一个解。对学生输出的任意一个结果,请你判断这个结果是否正确。
输入格式:
输入第一行给出个正整数:为学生提交的答案数量;为老师的标准答案给出的最长公共子序列的长度。
随后 行分别给出两个长度不超过 、仅由小写英文字母组成的非空字符串 和 。
最后行,每行给出一位学生提交的公共子序列,同样是长度不超过 、仅由小写英文字母组成的非空字符串。
输出格式:
对每位学生提交的字符串,如果其的确是 和 的公共子序列,且长度等于 ,即判定为正确,在一行中输出 yes
;否则输出 no
。
注意:老师给出的标准答案 不一定正确,但那不重要。你的任务只是按上述标准进行判断,不需要验证标准答案的正确性。
5 4
catcga
gtaccgtca
tcga
ctca
tca
ctga
tcgca
yes
yes
no
no
no