מציאת תת-קבוצה במערך עם סכום

נתון מערך חד-ממדי a מלא במספרים שלמים חיוביים, ומספר שלם חיובי num. יש להחזיר true אם קיימת תת-קבוצה של איברי המערך, שסכום האיברים שלה שווה ל-num, תוך שמירה על התנאים הבאים:

  1. אסור לקחת איבר מהמערך יותר מפעם אחת.
  2. אינה כוללת שלושה איברים סמוכים במערך, כלומר, אסור להכניס לתת-קבוצה את האיבר באינדקס i, גם את האיבר באינדקס i+1 וגם את האיבר באינדקס i+2, לכל i.

אם אין תת-קבוצה במערך שעומדת בתנאים אלו, יוחזר הערך false.

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

דוגמה 1:
קלט:
a = [5, 4, 2, 1, 3],
num = 5
פלט:
true

הסבר: ניתן להגיע לסכום 5 על ידי תת-קבוצה ריקה.

דוגמה 2:
קלט:
a = [5, 4, 2, 1, 3],
num = 3
פלט:
true

הסבר: ניתן להגיע לסכום 3 על ידי המספרים 1 + 2.

דוגמה 3:
קלט:
a = [5, 4, 2, 1, 3],
num = 9
פלט:
true

הסבר: ניתן להגיע לסכום 9 על ידי המספרים 5 + 4.

דוגמה 4:
קלט:
a = [5, 4, 2, 1, 3],
num = 2
פלט:
true

הסבר: ניתן להגיע לסכום 2 על ידי המספר 2.

דוגמה 5:
קלט:
a = [5, 4, 2, 1, 3],
num = 11
פלט:
false

הסבר: אין תת-קבוצה שמגיעה לסכום 11 מבלי לכלול שלושה איברים רצופים.

דוגמה 6:
קלט:
a = [5, 4, 2, 1, 3],
num = 17
פלט:
false

הסבר: אין תת-קבוצה שמגיעה לסכום 17.

דוגמה 7:
קלט:
a = [1, 2, 3, 4, 5],
num = 6
פלט:
true

הסבר: ניתן להגיע לסכום 6 על ידי המספרים 1 + 5.

דוגמה 8:
קלט:
a = [1, 2, 3, 4, 5],
num = 10
פלט:
true

הסבר: ניתן להגיע לסכום 10 על ידי המספרים 2 + 3 + 5.

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

קלט:

a = [5, 4, 2, 1, 3],
num = 5

הפלט המבוקש:

true