חיפוש המסדרון היורד הארוך ביותר

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

n, n-num, n-(2*num), n-(3*num),..., n-((k-1)*num)

n, האיבר הראשון בסדרה, עשוי להיות כל מספר שלם. לדוגמה, במערך:

 01234
0313152830
15554532726
25412525150
3501085311

עבור מדרון מסדר 2,

  • בתא [3][2] מתחיל המדרון מסדר 2 באורך שלוש הבא: 8, 10, 12.

עבור מדרון מסדר 1,

  • בתא [0][3] מתחיל הסדרון מסדר 1 באורך שלוש הבא: 26, 27, 28.
  • בתא [1][0] מתחיל המדרון מסדר 1 באורך שש הבא: 50, 51, 52, 53, 54, 55.
  • בתא [2][4] מתחיל המדרון מסדר 1 באורך שתיים הבא: 54, 55.

נתון מערך דו-ממדי mat מלא במספרים שלמים, ומספר שלם num, יש להחזיר את אורכו של המסדרון מטיפוס num הארוך ביותר במערך.

לדוגמה,

עבור המערך שלעיל, וערך num = 1 יוחזר הערך 6.

עבור המערך שלעיל, וערך num = 2 יוחזר הערך 3.

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

אילוצים:

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

דוגמה 1:
קלט:
mat =
[[3, 13, 15, 28, 30],
 [55, 54, 53, 27, 26],
 [54, 12, 52, 51, 50],
 [50, 10, 8, 53, 11]],
num = 1
פלט:
6

הסבר: המסדרון הארוך ביותר במערך עם הפרש של 1 הוא באורך 6 (50, 51, 52, 53, 54, 55).

דוגמה 2:
קלט:
mat =
[[3, 13, 15, 28, 30],
 [55, 54, 53, 27, 26],
 [54, 12, 52, 51, 50],
 [50, 10, 8, 53, 11]],
num = 2
פלט:
3

הסבר: המסדרון הארוך ביותר במערך עם הפרש של 2 הוא באורך 3 (8, 10, 12).

דוגמה 3:
קלט:
mat =
[[5, 4, 3, 2, 1],
 [6, 7, 8, 9, 10],
 [15, 14, 13, 12, 11]],
num = 1
פלט:
15
דוגמה 4:
קלט:
mat =
[[10, 20, 30],
 [40, 50, 60],
 [70, 80, 90]],
num = 10
פלט:
3
דוגמה 5:
קלט:
mat =
[[5, 6, 7],
 [8, 9, 10]],
num = 5
פלט:
1

הסבר: אין מסדרון באורך יותר מ-1 שבו ההפרש בין איברים סמוכים הוא 5.

דוגמה 6:
קלט:
mat = [[100]],
num = 1
פלט:
1

הסבר: מערך בגודל 1x1 מכיל מסדרון באורך 1.

דוגמה 7:
קלט:
mat =
[[20, 19, 18, 17, 16],
 [15, 14, 13, 12, 11],
 [10, 9, 8, 7, 6],
 [5, 4, 3, 2, 1]],
num = 1
פלט:
5
דוגמה 8:
קלט:
mat =
[[50, 45, 40],
 [35, 30, 25],
 [20, 15, 10]],
num = 5
פלט:
3
Loading...
נשמרLn 1, Col 1

קלט:

mat =
[[3, 13, 15, 28, 30],
 [55, 54, 53, 27, 26],
 [54, 12, 52, 51, 50],
 [50, 10, 8, 53, 11]],
num = 1

הפלט המבוקש:

6