נתון מערך דו-ממדי mat, שערכיו הם תווים (char). כמו כן נתונה מחרוזת תווים pattern.
נגדיר: מסלול-אותיות (letter-path) במערך אם הוא מקיים את התנאים הבאים:
pattern.כתבו שתי שיטות רקורסיביות:
lengthPath המקבלת מערך דו-ממדי mat מלא בתווים, ומחרוזת תווים pattern. שמחזירה את אורכו של מסלול האותיות הארוך ביותר שיש במערך.אם בתא הראשון במערך (שורה הראשונה ועמודה ראשונה) מופיע תו שלא נמצא ב-pattern, יוחזר הערך 0.
לדוגמה, נניח שהמחרוזת pattern היא "abc", במערך mat להלן מסומן מסלול-אותיות באורך מקסימלי - 5.
| 0 | 1 | 2 | 3 | 4 | 5 | |
| 0 | a | c | b | c | @ | a |
| 1 | b | x | z | c | s | a |
| 2 | ? | c | d | * | c | d |
| 3 | b | c | a | g | b | b |
| 4 | c | 2 | x | + | b | c |
שימו לב, במערך יש עוד מסלול-אותיות באורך 2 (a-b), אבל הוא קצר יותר מהמסלול המסומן.
maxPath המקבלת מערך דו-ממדי mat מלא בתווים, ומחרוזת תווים pattern. נגדיר שמסלול האותיות יכול להתחיל בכל תא במערך, ולא דווקא בתא הראשון. השיטה מחזירה את אורכו של מסלול האותיות הארוך ביותר שיש במערך. אם במערך לא מופיע תו שנמצא ב-pattern, יוחזר הערך 0.לדוגמה, נניח שהמחרוזת pattern היא "abc", במערך mat להלן מסומן מסלול-אותיות באורך מקסימלי - 11.
שימו לב, במערך יש עוד 2 מסלולי-אותיות באורך מקסימלי 11 (שניהם מתחילים בתא שבשורה האחרונה ובעמודה הראשונה).
| 0 | 1 | 2 | 3 | 4 | 5 | |
| 0 | a | d | e | s | @ | a |
| 1 | 3 | a | z | a | s | a |
| 2 | ? | c | b | b | c | d |
| 3 | b | c | a | 8 | b | b |
| 4 | c | 2 | x | + | b | c |
השתמשו בשיטה lengthPath.
השיטות צריכות להיות רקורסיביות ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
null ואינה ריקה.null ואינה ריקה.mat = [['a', 'd', 'e', 's', '@', 'a'], ['3', 'a', 'z', 'a', 's', 'a'], ['?', 'c', 'b', 'b', 'c', 'd'], ['b', 'c', 'a', '8', 'b', 'b'], ['c', '2', 'x', '+', 'b', 'c']], pattern = "abc"
11
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 11.
mat = [['x', 'y', 'z'], ['a', 'b', 'c'], ['d', 'e', 'f']], pattern = "xyz"
3
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 3.
mat = [['a', 'b'], ['b', 'a']], pattern = "ab"
4
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 4.
mat = [['a', 'b', 'c'], ['c', 'b', 'a'], ['a', 'c', 'b']], pattern = "abc"
9
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 9.
mat = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']], pattern = "xyz"
0
הסבר: אין תווים במערך שמתאימים לתבנית.
mat = [['a', 'b', 'c', 'd'], ['e', 'f', 'g', 'h'], ['i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p']], pattern = "mnop"
4
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 4.
mat = [['a', 'b', 'c'], ['b', 'c', 'a'], ['c', 'a', 'b']], pattern = "abc"
9
הסבר: המסלול הארוך ביותר שנמצא הוא באורך 9.
קלט:
mat = [['a', 'd', 'e', 's', '@', 'a'], ['3', 'a', 'z', 'a', 's', 'a'], ['?', 'c', 'b', 'b', 'c', 'd'], ['b', 'c', 'a', '8', 'b', 'b'], ['c', '2', 'x', '+', 'b', 'c']], pattern = "abc"
הפלט המבוקש:
11