כדי לפתור את הבעיה, כדאי לחשוב על הגישה הבאה:

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

  2. שמירה על הערך המקסימלי במסלול – בשיטה הרקורסיבית, תעבירו כפרמטר את הערך הכי גדול שראיתם במסלול עד כה.

  3. עצירת בסיס – כאשר אתם מגיעים לתא הסופי (n-1,n-1), זה אומר שהשלמתם מסלול. תחזירו את הערך המקסימלי במסלול הזה.

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

  5. מציאת התוצאה הכללית – כל קריאה רקורסיבית מחזירה את הערך המקסימלי של מסלול. שמרו את הקטן ביותר מבין הערכים האלו – זה מה שצריך להחזיר בסופו של דבר.

  6. שימוש בקבועים מתאימים – אפשר להיעזר בקבועים Integer.MAX_VALUE ו־Integer.MIN_VALUE כדי להשוות ערכים.


🧠 טיפ: אם תנסו לבדוק ידנית את המסלולים האפשריים בדוגמאות בשאלה, תבינו טוב יותר איך הרעיון של “מינימום המקסימומים” עובד.