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