java
public static boolean mmm (Queue<Integer> 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<Integer> q, int n) { if (mmm (q, n)) return n; return what (q, n - 1); }
התור q הנתון לסעיף א
התור q (ראש התור משמאל, סוף התור מימין): | 1 | 3 | 1 | 1 | 1 | 2 |
טבלת המעקב הריקה של סעיף א(1)
| התור q | num | y | y < z | q.head() == num |
|---|---|---|---|---|
התור q הנתון לסעיף ב (זהה לתור של סעיף א)
התור 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 עושה.
מהי סיבוכיות זמן הריצה של הפעולה what ? נמקו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.