נתון מערך דו-ממדי mat של מספרים שלמים חיוביים קטנים מ-100.
נגדיר: מסלול חוקי במערך כסדרה של תאים במערך, המתחילה בתא הראשון (שורה 0 ועמודה 0) ומתקדמת לפי ספרת האחדות והעשרות של המספר שבתא במערך. עד לתא האחרון במערך (שורה אחרונה ועמודה אחרונה).
לדוגמה, אם בתא [3][2] נמצא המספר 15, אז אפשר היה להתקדם:
לכל מסלול יש סכום, שהוא סך הערכים בתאים שהוא עובר בהם, כולל הראשון והאחרון.
יש להחזיר את הסכום המקסימלי שניתן לצבור במסלול תקין במערך. אם אין מסלול כזה יוחזר הערך Integer.MIN_VALUE.
לדוגמה, עבור המערך הבא:
| 0 | 1 | 2 | 3 | 4 | |
| 0 | 12 | 22 | 23 | 54 | 11 |
| 1 | 43 | 35 | 21 | 20 | 30 |
| 2 | 34 | 23 | 43 | 22 | 30 |
| 3 | 25 | 31 | 2 | 20 | 34 |
| 4 | 10 | 22 | 10 | 11 | 10 |
| 5 | 40 | 13 | 3 | 1 | 23 |
יש להחזיר 86, יש ארבעה מסלולים חוקיים במערך (כתובים להלן) והסכום הגדול ביותר ביניהם הוא זה של המסלול השני (שהוא מסומן במערך):
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
null ואינה ריקה.100.mat = [[12, 22, 23, 54, 11], [43, 35, 21, 20, 30], [34, 23, 43, 22, 30], [25, 31, 2, 20, 34], [10, 22, 10, 11, 10], [40, 13, 3, 1, 23]]
86
הסבר: המסלול המקסימלי הוא [0, 0] -> [2, 2] -> [2, 4] -> [5, 4] עם סכום 86.
mat = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Integer.MIN_Language
הסבר: לא קיים מסלול תקין.
mat = [[10, 10, 2], [10, 10, 2], [2, 2, 2]]
24
הסבר: המסלול המקסימלי הוא [0, 0] -> [0, 1] -> [0, 2] -> [2, 2] עם סכום 24.
mat = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]
5
הסבר: המסלול המקסימלי הוא [0, 0] -> [0, 1] -> [1, 1] -> [1, 2] -> [2, 2] עם סכום 5.
קלט:
mat = [[12, 22, 23, 54, 11], [43, 35, 21, 20, 30], [34, 23, 43, 22, 30], [25, 31, 2, 20, 34], [10, 22, 10, 11, 10], [40, 13, 3, 1, 23]]
הפלט המבוקש:
86