זאת השאלה דבר ראשון:
מולטי קבוצה זה קבוצה של מספרים כאשר כל מס' יכול להופיע מס' פעמים. לדוגמא 1,1,2,2,5,7 זה מולטי קבוצה. הקבוצה יכולה להיות מס' בין 0 ל19, כאשר את הקבוצה אני מייצג עם מערך חד מימדי לפי המופעים של כל מס'. לדוגמא: המולטי קבוצה שהבאתי למעלה אז במערך במקום i=1 יהיה ערך 2, במקום i=2 יהיה ערך 2, במקום i=5 יהיה ערך 1, במקום i=7 יהיה ערך 1 ובכל שאר המקומות יהיה 0.
עד עכשיו חשבנו שצריך פשוט לקחת זוג ראשון ולרוץ על כל שאר הזוגות ולבדוק אם מוצאים "דוגמא נגדית", ואם כן להדפיס אותה. אחרי שהמתרגל שיחרר לנו טסטים, מסתבר שאף אחד לא הבין אותו כמו שצריך. מה שמסתבר שצריך לעשות לדוגמא: עבור המולטי קבוצה 0,1,4,7,9,11 הדוגמא הנגדית תהיה (1,4) ו (4,7), ולא כמו שחשבנו בהתחלה (0,7) ו (4,11).
הרעיון שלי הוא היה לקחת כל פעם זוג של מס' לפי הסדר ואז לבדוק את כל הזוגות שלפניו, ולחפש אם אני מוצא דוגמא נגדית.
לדוגמא, כל הזוגות לפי סדר לקסיקוגרפי של המולטי קבוצה הן:
(9,11) (7,11) (4,11) (4,9) (4,7) (1,11) (1,9) (1,7) (1,4) (0,11) (0,9) (0,7) (0,4) (0,1)
אז לקחת לדוגמא (0,1) ולבדוק את כל הזוגות שלפניו (אין), (0,4) ולבדוק את כל הזוגות שלפניו וכן הלאה.
למישהו יש רעיון פה?
*שימו לב שאסור להשתמש בחומר "יותר מתקדם" ממערכים חד מימדיים, ואסור מחרוזות.