初看这道题,以为是先用SA和SC求LCS,再从SC中把SA剔除,看剩下来的是不是SB(……) 显然不对;因为SC与SA的公共子串不止一种,判断不一定正确. 于是考虑SC中每一个字符,如果能够匹配,那么不是SA中的就是SB中的: 定义bool s[i,j]为SA前i个,SB前j个能否组成SC前i+j个: 所以s[i,j]=true (s[i-1,j] and SA[i]=s[i+j]) or (s[i,j-1] and SB[j]=s[i+j]); 则最后能匹配的条件为s[length(SA),l…