המספר המינימלי בין המקסימומים

נתון מערך דו-ממדי ריבועי mat המכיל מספרים שלמים. נסמן את מספר השורות והעמודות במערך ב-n. המספרים ב-mat הם חיוביים ממש בלבד (ללא אפסים).

המסלולים בהם נעבור במערך מתחילים תמיד בתא הראשון (0,0) ועד לתא האחרון שהוא (n-1, n-1). כאשר אפשר לעבור מתא (i,j) לכל ארבעת שכניו מימין, משמאל, למעלה ולמטה, אבל לא באלכסון.

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

דוגמאות:

  • נתונים המערכים הבאים:
  01
A=012
 134
  01
B=013
 144
  • אם המערכים הם:
  0123
D=04582
 1312167
 21311014
 3151196
  0123
C=04582
 1312716
 21311014
 3151196

אז במערך C יוחזר 10, שהוא המקסימום במסלול המיטבי, והוא המינימלי מבין כל ערכי המקסימום של כל המסלולים האחרים.
אבל אם נחליף את התאים [1][3] שבו יש 16 ואת [1][2] שבו יש 7, (זה המערך D), המספר שיוחזר יהיה 12, שהוא המקסימום במסלול המסומן. שימו לב ש- 12 הוא המקסימום גם במסלול הזה:
[0][0] → [0][1] → [1][1] → [2][1] → [2][2] → [3][2] → [3][3]

  01234
D=0419325
 124232215
 21312151622
 31711181920
 41014876
  01234
C=0419325
 1242322215
 21312151614
 31711181920
 4102876

אז במערך C יוחזר 21, שהוא המינימלי מבין כל ערכי המקסימום של כל המסלולים האחרים. שימו לב ל-21 הוא המקסימום בעוד כמה מסלולים. לדוגמא:

  1. [0][0] → [1][0] → [2][0] → [3][0] → [3][1] → [3][2] → [3][3] → [3][4] → [4][4]
  2. [0][0] → [1][0] → [2][0] → [2][1] → [2][2] → [3][2] → [3][1] → [3][0] → [4][0] → [4][4]

אבל אם נחליף את התאים 2, 14, 22 במערך (זה המערך D), המספר שיוחזר יהיה 15, שהוא המקסימום במסלול המסומן.

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

אילוצים:
  • מותר לשנות את המטריצה במהלך השיטה, אבל המטריצה צריכה לחזור לקדמותה לאחר ביצוע השיטה.
  • המטריצה בהכרח ריבועית, כלומר, מספר השורות שווה למספר העמודות.
דוגמה 1:
קלט:
mat = 
[[1,2],
 [3,4]]
פלט:
4

הסבר: המספר המקסימלי בשני המסלולים האפשריים הוא 4

דוגמה 2:
קלט:
mat = 
[[1,3],
 [4,2]]
פלט:
3

הסבר: המספר המקסימלי במסלול דרך (0,1) הוא 3, שהוא הקטן מבין המקסימומים

דוגמה 3:
קלט:
mat = 
[[4, 5, 8, 2],
 [3, 12, 7, 16],
 [13, 1, 10, 14],
 [15, 11, 9, 6]]
פלט:
10

הסבר: קיים מסלול שהמספר המקסימלי בו הוא 10

דוגמה 4:
קלט:
mat = 
[[4, 5, 8, 2],
 [3, 12, 16, 7],
 [13, 1, 10, 14],
 [15, 11, 9, 6]]
פלט:
12

הסבר: המספר המקסימלי במסלול המיטבי הוא 12

דוגמה 5:
קלט:
mat = [[1]]
פלט:
1

הסבר: במטריצה 1x1 יש רק מסלול אחד אפשרי

דוגמה 6:
קלט:
mat = 
[[1, 2, 3],
 [4, 5, 6],
 [7, 8, 9]]
פלט:
9

הסבר: קיים מסלול שבו המספר המקסימלי הוא 9

דוגמה 7:
קלט:
mat = 
[[4, 1, 9, 3, 25],
 [24, 23, 2, 21, 5],
 [13, 12, 15, 16, 22],
 [17, 11, 18, 19, 20],
 [10, 14, 8, 7, 6]]
פלט:
15

הסבר: המספר המינימלי מבין כל המקסימומים האפשריים הוא 15

דוגמה 8:
קלט:
mat = 
[[4, 1, 9, 3, 25],
 [24, 23, 22, 21, 5],
 [13, 12, 15, 16, 14],
 [17, 11, 18, 19, 20],
 [10, 2, 8, 7, 6]]
פלט:
21

הסבר: קיים מסלול שבו המספר המקסימלי הוא 21

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

קלט:

mat = 
[[1,2],
 [3,4]]

הפלט המבוקש:

4