csharp
public static bool Mmm (Queue<int> q, int z) { q.Insert (0); int num = q.Head(); int y = 0; while (q.Head() > 0) { if (y < z) { if (q.Head() == num) { y++; } else { num = q.Head(); y = 1; } } q.Insert (q.Remove()); } q.Remove(); return y == z; }
public static int What (Queue<int> q, int n) { if (Mmm (q, n)) return n; return What (q, n - 1); }
`ראש התור → 1, 3, 1, 1, 1, 2 ← סוף התור`
טבלת המעקב הריקה של סעיף א(1)
| התור q | num | y | y < z | q.Head() == num |
|---|---|---|---|---|
התור q הנתון לסעיף ב (זהה לתור של סעיף א)
`ראש התור → 1, 3, 1, 1, 1, 2 ← סוף התור`
טבלת המעקב המוצעת של סעיף ב(1)
| התור q שמתקבל בפעולה | הערך n שמתקבל בפעולה | Mmm (q, n) == true | ערך מוחזר |
|---|---|---|---|
לפניכם הפעולה Mmm , המקבלת תור – q ובו מספרים הגדולים מ־0 , ומספר שלם z – הגדול מ־0 .
(הקוד מופיע בתחילת השאלה.)
נתון תור q מטיפוס שלם:
ראש התור → 1, 3, 1, 1, 1, 2 ← סוף התור
עקבו בעזרת טבלת המעקב שלפניכם אחר הפעולה Mmm (q , 4) , וכתבו מה הפעולה מחזירה.
Mmm (q, 4)
הסבירו מה הפעולה Mmm עושה.
מהי סיבוכיות זמן הריצה של הפעולה Mmm ? נמקו את תשובתכם.
לפניכם הפעולה What , המקבלת תור – q ובו מספרים הגדולים מ־0 , ואת גודל התור – n .
(הקוד מופיע בתחילת השאלה.)
נתון תור – q מטיפוס שלם:
ראש התור → 1, 3, 1, 1, 1, 2 ← סוף התור
עקבו אחר הפעולה What (q, 6) , וכתבו מה הפעולה מחזירה (אין צורך לעקוב אחר הפעולה Mmm).
המעקב יכלול בכל קריאה את הערכים של q , n ואת הערך המוחזר.
לפניכם הצעה לטבלת מעקב (אין חובה להשתמש בטבלה זו).
What (q, 6)
הסבירו מה הפעולה What עושה.
מהי סיבוכיות זמן הריצה של הפעולה What ? נמקו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.