תור מחסניות הוא "מושלם" אם: (1) כל מחסנית עולה מראשה לתחתיתה; (2) אורכי המחסניות עולים מראש התור לסופו; (3) ראש כל מחסנית = תחתית המחסנית הקודמת בתור. דוגמה: 5 מחסניות [2,3,7]→[7,...,15]→[15,...,70]→[70,...,115]→[115,...,800].
תור מחסניות הוא "מושלם" אם: (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?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.