תכנות, רקורסיה, מערכים, מחרוזות, עצים בינאריים ורשימות מקושרות
longest_monotone למטה. הפונקציה מקבלת מחרוזת המורכבת מאותיות קטנות באנגלית ('a','b','c',...,'z'), ומחזירה את האורך המקסימלי של תת מחרוזת מונוטונית עולה של . דוגמאות:lcs_mem. אסור להשתמש ב-slicing, והפתרון צריך לרוץ בסיבוכיות זמן פולינומית בממוצע.longest_monotone(st) שמקבלת מחרוזת המורכבת מאותיות קטנות באנגלית, ומחזירה את האורך המקסימלי של תת מחרוזת מונוטונית עולה של . מותר (אך לא חובה) להשתמש בפונקציה lcs_mem. הפתרון צריך לרוץ בסיבוכיות זמן פולינומית בממוצע.edit_distance:can_win_nim אשר מקבלת רשימה בגודל חיובי (גם מספר הגפרורים ב- הערימות), ומחזירה True אם מצב הערימות (בגודל מאפס) בלבד, היינו מצב מנצח, ואחרת מחזירה False. על הפתרון שלכם להיות רקורסיבי.if tuple(lst) in d: return d[tuple(lst)]def can_win_nim(lst, d)if not can_win_nim(lst, d):lst[i] += 1; d[tuple(lst)] = Trued[tuple(lst)] = Falseשאלות תרגול במבוא למדעי המחשב בנושא memoization ממבחנים של האוניברסיטה הפתוחה, אוניברסיטת תל אביב, אוניברסיטת בר-אילן, הטכניון. השאלות ממוינות לפי רמת קושי, עם פתרונות לבדיקה עצמית - כך שניתן ללמוד מטעויות ולהבין את דרך הפתרון לפני הבחינה. ניתן לאתר שאלות חוזרות ולהריץ מבחני סימולציה ממוקדים בנושא memoization.