 ออกแบบอัลกอริทึมเพื่อค้นหาลำดับย่อยร่วมที่ยาวที่สุดระหว่างสองสตริง
def LCS(s1, s2): m = len(s1) n = len(s2) # ประกาศอาร์เรย์สำหรับเก็บค่า dp L = [[None]*(n + 1) for _ in range(m + 1) ] """ขั้นตอนต่อไปนี้สร้าง L[m + 1][n + 1] แบบล่างขึ้นบน หมายเหตุ: L[i][j] ประกอบด้วยความยาวของ LCS ของ X[0..i-1] และ Y[0 .j-1]""" สำหรับ i ในช่วง (m + 1): # แถวก่อนหน้าเป็นศูนย์ทั้งหมด # เนื่องจากไม่มีลำดับทั่วไปใดที่สามารถใช้กับ j ในช่วง (n + 1): # คอลัมน์แรกของแถวทั้งหมด เป็น 0 ถ้า i == 0 หรือ j == 0 : L[i][j] = 0 elif s1[i-1] == s2[j-1]: L[i][j] = L[i- 1][j-1]+1 อื่นๆ: L[i][j] = max(L[i-1][j] , L[i][j-1]) # L[m][n] ประกอบด้วย ความยาวของ LCS ของ X[0..n-1] & Y[0..m-1] คืนค่า L[m][n]