הנסיך המקפץ על גגות העיר

הנסיך מקפץ על גגות העיר. מטרתו למצוא את הרשע ולהילחם בו, על מנת להציל את הנסיכה. מפת הגבהים של גגות העיר מיוצגת על-ידי מערך דו-ממדי ריבועי drm המכיל מספרים שלמים אי-שליליים. המיקום של הרשע מסומן על-ידי המספר -1 (זהו התא היחיד שמכיל מספר שלילי).

בכל צעד הנסיך יכול להתקדם למשבצת סמוכה: למעלה, למטה, שמאלה או ימינה (לא באלכסון). אם המשבצת הסמוכה נמצאת באותו גובה - יכול הנסיך ללכת אליה. בנוסף, יכול הנסיך לטפס על גג בגובה יחידה אחת, או לרדת מגג בגובה יחידה אחת או שתיים. אם הוא מנסה לטפס לגובה של יותר מיחידה אחת או לרדת לגובה של יותר משתי יחידות, הוא נופל מיד. כשהנסיך נמצא על גג סמוך לרשע (אחד מארבעת שכניו) הוא יכול לקפוץ אליו ללא קשר להפרש הגבהים בינו לבין הרשע.

האינדקסים i ו-j מציינים את אינדקס השורה והעמודה בהתאמה של התא בו נמצא הנסיך בתחילת המסלול.

יש להחזיר את מספר התאים במסלול הקצר ביותר או -1 אם אין חוקי כזה. לאחר ריצת השיטה על המפה (המערך) להישאר ללא שינוי.

לדוגמה, עבור המפה הבאה:

 01234
020123
123554
28-1687
334724
424312

הרשע נמצא בתא בשורה 2 ובעמודה 1.

אם הנסיך נמצא בתא (0,0), קיימים שלושה מסלולים המובילים אותו לרשע. הם מסומנים במפות להלן:

20123
23554
8-1687
34724
24312

מסלול באורך 10

20123
23554
8-1687
34724
24312

מסלול באורך 10

20123
23554
8-1687
34724
24312

מסלול באורך 4

לכן יוחזר הערך 4.

באותה מפה, אם הנסיך נמצא בתא (4, 4) אין מסלול חוקי בו הוא יכול ללכת עד הרשע ולכן יוחזר הערך -1.

השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.

אילוצים:

מותר לשנות את המערך drm במהלך השיטה, אבל חובה להחזיר אותו למצבו ההתחלתי בסופה.

דוגמה 1:
קלט:
drm =
[[2, 0, 1, 2, 3],
 [2, 3, 5, 5, 4],
 [8, -1, 6, 8, 7],
 [3, 4, 7, 2, 4],
 [2, 4, 3, 1, 2]],
i = 0,
j = 0
פלט:
4

הסבר: המסלול הקצר ביותר הינו 4.

דוגמה 2:
קלט:
drm =
[[2, 0, 1, 2, 3],
 [2, 3, 5, 5, 4],
 [8, -1, 6, 8, 7],
 [3, 4, 7, 2, 4],
 [2, 4, 3, 1, 2]],
i = 4,
j = 4
פלט:
-1

הסבר: אין מסלול חוקי בו הנסיך יכול ללכת.

Loading...
נשמרLn 1, Col 1

קלט:

drm =
[[2, 0, 1, 2, 3],
 [2, 3, 5, 5, 4],
 [8, -1, 6, 8, 7],
 [3, 4, 7, 2, 4],
 [2, 4, 3, 1, 2]],
i = 0,
j = 0

הפלט המבוקש:

4