נתון מערך דו-מימדי mat המלא במספרים אפס או אחד. נגדיר, מסלול חוקי במערך כמסלול שמתחיל בתא (0,0) ומסתיים בתא היעד (x,y) ועובר רק בתאים שערכם הוא 1. אפשר לעבור מתא לתא רק אם הוא שכן שלו מימין, משמאל, למעלה או למטה. לא באלכסון. כמו כן, אי אפשר לבקר בתא שכבר ביקרנו בו.
יש להחזיר את אורכו של המסלול הארוך ביותר במערך mat.
לדוגמה, במערך להלן, עבור x = 2, y = 5 אורכו של המסלול הארוך ביותר הוא 16, ומסומן במערך.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 |
| 2 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
מותר לשנות את המערך במהלך השיטה, אבל בסופה הוא צריך לחזור למצבו המקורי.
mat = [[1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 1, 1]], x = 2, y = 5
16
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (2,5) עם אורך של 16.
mat = [[1, 0, 1], [1, 1, 0], [0, 1, 1]], x = 2, y = 2
4
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (2,2) עם אורך של 4.
mat = [[1, 1, 1], [0, 0, 1], [1, 1, 1]], x = 2, y = 2
5
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (2,2) עם אורך של 5.
mat = [[1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1]], x = 1, y = 3
6
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (1,3) עם אורך של 6.
mat = [[1, 1], [1,1]], x = 1, y = 1
3
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (1,1) עם אורך של 3.
mat = [[0, 0, 1], [1, 1, 1], [1, 0, 1]], x = 2, y = 2
0
הסבר: אין מסלול אפשרי, כי הערך בתא הראשון הוא 0
mat = [[1, 1, 0], [0, 1, 1], [1, 1, 0]], x = 1, y = 2
4
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (1,2) עם אורך של 4.
mat = [[1, 1, 1, 1], [1, 0, 0, 1], [1, 1, 1, 1]], x = 2, y = 3
7
הסבר: המסלול הארוך ביותר מתחיל בתא (0,0) ומסתיים בתא (2,3) עם אורך של 7.
קלט:
mat = [[1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 1, 0, 0, 1], [1, 1, 1, 1, 0, 1, 1]], x = 2, y = 5
הפלט המבוקש:
16