נגדיר: מחרוזת בינארית היא מחרוזת שכל התווים בה הם '0' או '1'.
בהינתן מערך של מספרים חיוביים a, מספר שלם חיובי sum, ומחרוזת בינארית s,
נאמר כי s מציינת את הסכום sum במערך a אם התנאים הבאים מתקיימים:
s שווה לאורך המערך a.a באינדקסים בהם מופיע התו '1' הוא בדיוק sum.השיטה מקבלת מערך המלא במספרים שלמים חיוביים a , ומספר שלם חיובי sum ומדפיסה את כל המחרוזות הבינאריות המציינות את הסכום sum במערך a - אם לא קיימות מחרוזות כאלו, השיטה לא תדפיס דבר.
השיטה צריכה להיות רקורסיבית ללא שימוש בלולאות כלל. כך גם כל שיטות העזר (אם תכתבו) לא יכולות להכיל לולאות.
a שונה מ-null ויש בו לפחות איבר אחד.
a = [1, 1, 3, 7], sum = 8
0101 1001
הסבר: המחרוזות "0101" ו- "1001" מציינות את הסכום 8
a = [1, 1, 3, 7], sum = 10
0011
הסבר: המחרוזת "0011" מציינת את הסכום 10
a = [1, 1, 3, 7], sum = 12
1111
הסבר: המחרוזת "1111" מציינת את הסכום 12
a = [1, 1, 3, 7], sum = 6
(אין פלט)
הסבר: לא קיימת מחרוזת שמציינת את הסכום 6
a = [2, 3], sum = 3
01
הסבר: עבור המערך {2,3} והסכום 3, קיימת מחרוזת אחת: "01" (3=3).
a = [2, 3], sum = 2
10
הסבר: עבור המערך {2,3} והסכום 2, קיימת מחרוזת אחת: "10" (2=2).
a = [5], sum = 5
1
הסבר: עבור המערך {5} והסכום 5, קיימת מחרוזת אחת: "1" (5=5).
a = [5], sum = 0
0
הסבר: עבור המערך {5} והסכום 0, קיימת מחרוזת אחת: "0" (אין איברים נכללים בסכום = 0).
קלט:
a = [1, 1, 3, 7], sum = 8
הפלט המבוקש:
0101 1001