הופעות של מטריצה כתת-מטריצה

נתונים שני מערכים דו-ממדיים mat1 ו- mat2 המלאים במספרים שלמים.

נאמר שהמערך mat2 נמצא בתוך המערך mat1 החל ממיקום [i][j], אם יש חפיפה מלאה בין המערך mat2 עם תת-המערך של mat1 מהמקום mat1[i][j] (כלפי ימין ולמטה).

לדוגמא, אם המערכים הם:

 0123
05-250
1254254
2103328-7
351-81033
4-325420
 01
0254
128-7
21033

המערך mat2 נמצא בתוך המערך mat1 החל מהמיקום [1][2]. שימו לב ש- mat2 לא נמצא בתוך המערך mat1 החל משום מיקום אחר. גם לא מהמיקום [1][0] כי שורה 1 של mat2 לא נמצאת בתאים [2][0] ו- [2][1] של המערך mat1, ושורה 2 של mat2 לא נמצאת בתאים [3][0] ו- [3][1] של המערך mat1.

 

בהינתן mat1 ו- mat2 - שני מערכים דו-ממדיים מלאים במספרים שלמים כלשהו. יש להחזיר כמה פעמים המערך mat2 נמצא בתוך המערך mat1 (לפי ההסבר לעיל), ולהדפיס את כל המיקומים במטריצה mat1, שורה i ועמודה j, שהחל מהם יש חפיפה מלאה בין תת המטריצה של mat1 ממקום [i][j] והלאה לבין המטריצה mat2 כולה.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.

אילוצים:

אף אחד מהמערכים המועברים כפרמטרים אינו null וגודלו של כל מערך הוא לפחות 1x1.

  • המערכים מלאים בנתונים חוקיים ואינם null.
  • יש להחזיר את מספר המופעים של mat2 בתוך mat1 וגם להדפיס את המיקומים הנדרשים.
דוגמה 1:
קלט:
mat1 =
[[5, -2, 5, 0],
 [25, 4, 25, 4],
 [10, 33, 28, -7],
 [51, -8, 10, 33],
 [-3, 25, 4, 20]],
mat2 =
[[25, 4],
 [28, -7],
 [10, 33]]
פלט:
1 2
1

הסבר: המערך mat2 נמצא בתוך המערך mat1 החל מהמיקום [2][1].

דוגמה 2:
קלט:
mat1 =
[[1, 12, -17, 4, 6, 13],
 [7, 6, 3, 0, 31, 9],
 [-2, 10, 12, -17, -5, -1],
 [12, -17, 6, 3, 12, -17],
 [6, 3, 10, 12, 6, 3],
 [10, 12, 1, 5, 10, 12]],
mat2 =
[[12, -17],
 [6, 3],
 [10, 12]]
פלט:
0 1
2 2
3 0
3 4
4

הסבר: המערך mat2 נמצא בתוך המערך mat1 החל מ-4 מיקומים שונים.

דוגמה 3:
קלט:
mat1 = 
[[1, 2, 5],
 [3, 4, 6],
 [7, 8, 9]]
mat2 = 
[[1, 2],
 [3, 4]]
פלט:
0 0
1
דוגמה 4:
קלט:
mat1 = 
[[1, 2],
 [3, 4]]
mat2 = 
[[1, 2],
 [3, 4]]
פלט:
0 0
1
דוגמה 5:
קלט:
mat1 = 
[[1, 2],
 [3, 4]]
mat2 = 
[[1, 2],
 [3, 5]]
פלט:
0
דוגמה 6:
קלט:
mat1 = 
[[5, 5, 5],
 [5, 5, 5],
 [5, 5, 5]]
mat2 = 
[[5, 5],
 [5, 5]]
פלט:
0 0
0 1
1 0
1 1
4
דוגמה 7:
קלט:
mat1 = 
[[-1, -2, 3],
 [-4, -5, 6],
 [7, 8, 9]]
mat2 = 
[[-1, -2],
 [-4, -5]]
פלט:
0 0
1
דוגמה 8:
קלט:
mat1 = [[7]]
mat2 = [[7]]
פלט:
0 0
1
Loading...
נשמרLn 1, Col 1

קלט:

mat1 =
[[5, -2, 5, 0],
 [25, 4, 25, 4],
 [10, 33, 28, -7],
 [51, -8, 10, 33],
 [-3, 25, 4, 20]],
mat2 =
[[25, 4],
 [28, -7],
 [10, 33]]

הפלט המבוקש:

1 2
1