תור מחסניות הוא "מושלם" אם: (1) כל מחסנית עולה מראשה לתחתיתה; (2) אורכי המחסניות עולים מראש התור לסופו; (3) ראש כל מחסנית = תחתית המחסנית הקודמת בתור. דוגמה: 5 מחסניות 2,3,7 → 7,...,15 → 15,...,70 → 70,...,115 → 115,...,800 .
דוגמה לתור מחסניות מושלם (5 מחסניות): מחסנית1(אורך 3, ראש=2, תחתית=7): 2,3,7. מחסנית2(אורך 5, ראש=7, תחתית=15): 7,10,12,14,15. מחסנית3(אורך 6, ראש=15, תחתית=70): 15,20,36,60,65,70. מחסנית4(אורך 7, ראש=70, תחתית=115): 70,80,90,100,108,112,115. מחסנית5(אורך 8, ראש=115, תחתית=800): 115,130,180,200,300,500,700,800.
ראש התור: [2,3,7] → [7,10,12,14,15] → [15,20,36,60,65,70] → [70,80,90,100,108,112,115] → [115,130,180,200,300,500,700,800] :סוף התור
(בכל מחסנית: הערך הראשון = ראש המחסנית, הערך האחרון = תחתית המחסנית)
סעיף א
כתבו פעולה המקבלת תור מחסניות ובודקת אם הוא תור מושלם. אם כן — הפעולה תחזיר true, ואם לא — הפעולה תחזיר false. הערה: אם כתבתם פעולות עזר חובה לתעד אותן (לציין פרמטרים שהפעולה מקבלת, הנחות, ותיאור של מה הפעולה מבצעת). כמו כן, יש לציין את הסיבוכיות של כל פעולת עזר שכתבתם.
public static bool IsPerfect(Queue<Stack<int>> q)
סעיף ב
מהי סיבוכיות הפעולה isPerfect?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.