נתון מערך חד-ממדי arr שערכיו הם מספרים שלמים חיוביים ממש. ומספר שלם num, יש לבדוק אם אפשר להגיע למספר num על ידי חיבור וחיסור חלק מהמספרים במערך arr, ובכמה אופנים.
לדוגמה, אם המערך arr הוא להלן והמספר num הוא 4,
| 0 | 1 | 2 | 3 |
| 1 | 3 | 6 | 2 |
אפשר להגיע למספר 4 כך:
+3 +1 = 4+6 -3 +1 = 4+2 +3 -1 = 4+2 +6 -3 -1 = 4-2 +6 = 4כלומר, יש כאן 5 ביטויים שונים עם פעולות חיבור וחיסור בלבד, שמערבים את איברי המערך arr ותוצאותיהם הם המספר num = 4. שימו לב, כל ביטוי נספר פעם אחת, ולא סופרים את הביטויים שמשתמשים בחוק החילוף. כלומר, אם ספרנו את הביטוי +3 +1 לא נספור את הביטוי +1 +3.
בהינתן מערך arr של שלמים חיוביים ממש, ומספר שלם num, יש להחזיר את מספר הביטויים השונים שמשתמשים בפעולות חיבור וחיסור על איברי המערך (לא בהכרח כולם), ומגיעים לתוצאה num. ולהדפיס את הביטויים האלה, ההדפסה תכלול את המספר השלם והסימן פלוס (+) או מינוס (-) שלפניו, ורווח לאחריו.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
יש להדפיס את הביטויים החשבוניים וגם להחזיר את מספרם.
arr = [1, 3, 6, 2], num = 4
+1 +3 +1 -3 +6 -1 +3 +2 -1 -3 +6 +2 +6 -2 5
הסבר: ישנם 5 ביטויים שונים שמגיעים ל-4.
arr = [2, 1, 6, 3], num = 3
+2 +1 -2 -1 +6 +6 -3 +3 4
הסבר: ישנם 4 ביטויים שונים שמגיעים ל-3.
arr = [5, 5, 5], num = 5
+5 +5 -5 +5 -5 +5 +5 -5 +5 +5 +5 +5 6
הסבר: ישנם 6 ביטויים שונים שמגיעים ל-5.
arr = [1, 2, 3], num = 6
+1 +2 +3 1
הסבר: יש ביטוי אחד שמגיע ל-6: +1 +2 +3.
arr = [1, 2, 3], num = 0
+1 +2 -3 -1 -2 +3 2
הסבר: ישנם 3 ביטויים שונים שמגיעים ל-0 כולל ביטוי ריק.
arr = [10, 20, 30], num = 10
+10 -10 +20 -20 +30 3
הסבר: ישנם 3ביטויים שונים שמגיעים ל-10.
arr = [4, 4, 4, 4], num = 8
+4 +4 +4 -4 +4 +4 -4 +4 +4 +4 +4 -4 +4 +4 +4 +4 +4 +4 -4 +4 +4 +4 +4 +4 +4 +4 +4 +4 10
הסבר: ישנם 10 ביטויים שונים שמגיעים ל-8.
arr = [7, 1, 2, 9], num = 3
-7 +1 +9 -7 -1 +2 +9 +1 +2 3
הסבר: ישנם 3 ביטויים שונים שמגיעים ל-3.
קלט:
arr = [1, 3, 6, 2], num = 4
הפלט המבוקש:
+1 +3 +1 -3 +6 -1 +3 +2 -1 -3 +6 +2 +6 -2 5