נתונים שני מערכים חד-ממדיים a ו-b מלאים במספרים שלמים, ממוינים בסדר עולה ממש.
אנחנו מעוניינים ליצור מערך ממוין בסדר עולה ממש משני המערכים, כך שהאיברים בו נלקחים לסירוגין מהמערך a ומהמערך b.
לדוגמא, אם המערכים הנתונים הם:
| 0 | 1 | |
| a= | 10 | 20 |
| 0 | 1 | 2 | |
| b= | 5 | 20 | 30 |
בהינתן שני מערכים חד ממדיים a ו-b הממוינים בסדר עולה ממש, יש להחזיר את אורך המערך הממוין שאיבריו הם לסירוגין מהמערכים a ו-b שהוא הארוך ביותר שאפשר ליצור מהמערכים a ו-b. כמו כן, יש להדפיס את איברי המערך הזה. אם יש יותר ממערך אחד באורך המקסימלי, יודפס אחד מהם (לא משנה מי).
בדוגמא לעיל, יוחזר הערך 3, ויודפס אחד מהמערכים {5,20,30} ,{5,10,30} ,{5,10,20}
אם המערכים הנתונים הם: c = {2} d = {2}
אז המערך היחיד שנוצר הוא {2} ואורכו הוא 1
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
null.a = [10, 20], b = [5, 20, 30]
[5, 10, 20] 3
הסבר: המערך הארוך ביותר שניתן ליצור הוא באורך 3. אחד מהמערכים האפשריים הוא {5, 10, 20}. המערכים האחרים באותו אורך הם {5, 10, 30} או {5, 20, 30}.
a = [2], b = [2]
[2] 1
הסבר: המערך היחיד האפשרי הוא {2} באורך 1.
a = [1, 3, 5], b = [2, 4, 6]
[1, 2, 3, 4, 5, 6] 6
הסבר: המערך הארוך ביותר האפשרי הוא {1, 2, 3, 4, 5, 6} באורך 6.
a = [5, 10, 15], b = [20, 25, 30]
[5, 20] 2
הסבר: המערך הארוך ביותר האפשרי הוא {5, 20} באורך 2.
a = [1, 3, 5, 7, 9], b = [2, 4]
[1, 2, 3, 4, 5] 5
הסבר: המערך הארוך ביותר האפשרי הוא {1, 2, 3, 4, 5} באורך 5.
a = [10], b = [5, 15]
[5, 10, 15] 3
הסבר: המערך הארוך ביותר האפשרי הוא {5, 10, 15} באורך 3.
a = [100, 200, 300], b = [100, 200, 300]
[100, 200, 300] 3
הסבר: המערכים זהים, ולכן המערך הארוך ביותר יכול להיות {100, 200, 300} באורך 3.
a = [3, 7, 8], b = [3, 8, 9]
[3, 7, 8] 3
הסבר: כאשר a[0] == b[0] חייבים לבדוק את שתי האפשרויות. התחלה ממערך a נותנת רק {3, 8} (אורך 2), אך התחלה ממערך b נותנת {3, 7, 8} (אורך 3). לכן זו האפשרות הנבחרת. גם {3, 7, 9} ו-{3, 8, 9} הם פתרונות אפשריים באורך 3.
קלט:
a = [10, 20], b = [5, 20, 30]
הפלט המבוקש:
[5, 10, 20] 3