בהינתן מחרוזת תווים st, נגדיר תת-סדרה (sequence-sub) של המחרוזת כמחרוזת שנשארה לאחר שהורדו ממנה חלק מהתווים.
למשל, אם המחרוזת המקורית st = "abcde" אז כל אחת מהמחרוזות להלן היא תת-סדרה של st (לא כתבנו כאן את כל האפשרויות):
"ab", "ce", "acd", "d", "abcde", "" (המחרוזת הריקה)
שימו לב, תת-סדרה (sequence-sub) אינה תת-מחרוזת (string-sub), ולכן התווים אינם צריכים להיות במיקום עוקב דווקא, אבל הסדר ביניהם צריך להיות כמו הסדר במחרוזת המקורית, ולא יכולים להיות תווים שלא היו במחרוזת המקורית.
לכן, המחרוזות להלן אינן תת-סדרה של st:
"ba", "cf", "edcba", "g"
בהינתן שלוש מחרוזות תווים st1, st2, st3, נגדיר את התת-סדרה המשותפת הארוכה ביותר לשלוש המחרוזות, כמחרוזת תווים הארוכה ביותר שאפשר ליצור כאשר מורידים חלק מהתווים מכל אחת מהמחרוזות.
יש להחזיר את האורך של המחרוזת שמהווה תת-סדרה משותפת אורכה ביותר של שלוש המחרוזות. אם אין תת-סדרה כזו יוחזר 0.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
st1 = "ABCBDAB", st2 = "BDCABA", st3 = "BADACB"
4
הסבר: התת-סדרה הארוכה ביותר המשותפת היא "BDAB"
st1 = "ABCBDAB", st2 = "XYZ", st3 = "DC"
0
הסבר: רק המחרוזת הריקה משותפת לשלוש המחרוזות
st1 = "ABC", st2 = "ABC", st3 = "ABC"
3
הסבר: כל המחרוזות זהות, ולכן התת-סדרה המשותפת היא המחרוזת המלאה "ABC"
st1 = "AAAA", st2 = "AAA", st3 = "AA"
2
הסבר: התת-סדרה המשותפת הארוכה ביותר היא "AA"
st1 = "A", st2 = "A", st3 = "A"
1
הסבר: מחרוזת באורך 1 המשותפת לכולן
st1 = "", st2 = "ABC", st3 = "DEF"
0
הסבר: אחת המחרוזות ריקה, ולכן רק המחרוזת הריקה משותפת
st1 = "ABCDEF", st2 = "ACDEF", st3 = "ABDEF"
4
הסבר: התת-סדרה המשותפת הארוכה ביותר היא "ADEF"
st1 = "ABC", st2 = "BAC", st3 = "CAB"
1
הסבר: מחרוזת באורך 1 המשותפת לכולן
קלט:
st1 = "ABCBDAB", st2 = "BDCABA", st3 = "BADACB"
הפלט המבוקש:
4