נתונים:
mat של מספרים שלמים וחיוביים (בגודל n שורות ו- m עמודות).arr של מספרים שלמים וחיוביים (בגודל m)kאנחנו רוצים לבדוק האם קיימות לכל היותר k שורות של המערך mat כך שאיחוד השורות האלו מכיל את כל המספרים שבמערך arr.
לדוגמא, אם המערכים mat ו-arr הם כדלהלן:
| 0 | 1 | 2 |
| 7 | 2 | 3 |
| 0 | 1 | 2 | |
| 0 | 1 | 5 | 7 |
| 1 | 3 | 2 | 9 |
| 2 | 1 | 2 | 3 |
עבור k = 2, נקבל תשובה חיובית כי שורה מספר 0 ושורה מספר 2 במערך mat המכילות את המספרים 1, 5, 7, 2, 3 מכילות את כל מספרי המערך arr.
גם שורות 0 ו-1 במערך המכילות את המספרים 1, 5, 7, 3, 2, 9 מכילות את כל מספרי המערך arr. כמו כן ברור שכל k>2 מקיים את התנאי.
אולם עבור k = 1 נקבל תשובה שלילית כיוון שאין שורה אחת במערך mat שמכילה את כל איברי המערך arr.
בהינתן מערך דו-ממדי mat, מערך חד-ממדי arr ומספר שלם k. יש להחזיר את הערך true אם יש k שורות (או פחות) במערך mat שאיחודן מכיל את כל מספרי המערך arr, ו-false אחרת.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
המערכים מלאים במספרים שלמים חיוביים, והם בגדלים המתאימים.
לנוחותכם, הגדרנו כמה שיטות שאתם יכולים (אך לא חייבים) להשתמש בהן. אין צורך לממש אותן:
השיטה מחזירה true אם כל איברי במערך x שווים ל-0, ו-false אחרת.
השיטה מעתיקה את כל איברי המערך src למערך dest. אפשר להניח שהמערכים שווים באורכם.
השיטה מאפסת את כל איברי המערך x אשר מופיעים במערך y.
mat = [[1, 5, 7], [3, 2, 9], [1, 2, 3]], arr = [7, 2, 3], k = 2
true
mat = [[1, 5, 7], [3, 2, 9], [1, 2, 3]], arr = [7, 2, 3], k = 1
false
mat = [[1, 2, 3], [4, 5, 6]], arr = [1, 2, 3], k = 0
false
mat = [[1, 2], [3, 4]], arr = [1, 2], k = -1
false
mat = [[1, 2, 3]], arr = [1, 2, 3], k = 1
true
mat = [[1, 2], [2, 3]], arr = [2, 2], k = 1
true
mat = [[1, 1, 2], [2, 2, 3]], arr = [1, 2, 3], k = 1
false
mat = [[1, 2, 1], [3, 4, 3], [5, 6, 5]], arr = [1, 3, 5], k = 3
true
קלט:
mat = [[1, 5, 7], [3, 2, 9], [1, 2, 3]], arr = [7, 2, 3], k = 2
הפלט המבוקש:
true