עבור לתוכן

עזרה

Featured Replies

פורסם

:

כניסה איבר: אדם חדש יכנס בראש הרשימה . הותיק ביותר יהיה בראש.

הוצאת איבר: עוברים מתחילת הרשימה לסוף. מסמנים תחילה ב-max את האדם הראשון. מתקדמם ברשימה וכל איבר בעל מידת כעס שווה או גדולה לראשון יסומן כ-max . בסוף נוציא את האיבר ה-max אבל רק אחרי שנבדוק אם הnext שלו הוא לא null כי אז צריך להגדיל את הכעס של כולם ב-1.

נתקעתי בשלה הארון בו צריך להגדיל את הכעס של כל האנשים ב-k .

פורסם

זה דורש טריק קטן, וזה באמת לא קשור למבנה הנתונים שאתה משתמש בו.

תזכור שאם באמת לכל אדם בתור יש משתנה יחיד שמייצג את מידת הכעס שלו, אז הדרך היחידה שלך לשנות את מידת הכעס של כולם היא לעבור על כל האנשים, מה שלא יכול להתבצע בזמן קבוע. תחשוב איך לשפר קצת את המימוש של מידת הכעס שיאפשר את זה.

פורסם
  • מחבר

אוקיי..אז חשבתי לשמור משתנה כללי לכל האנשים בתור כך שכל פעם שצריך להעלות את הרמה של כולם המשתנה יתעדכן שם.

ובעצם מידת הכעס של כל אחד תהיה מידת הכעס הפרטית שלו+הציבורית.

כל פעם שיכנס אדם חדש לתור מידת הכעס שלו תהיה מידת הכעס הציבורית כפול מינוס 1.

אם יש הצעה טובה יותר אשמח לשמוע.

תודה

פורסם

זה בדיוק הפתרון, חוץ מזה:

כל פעם שיכנס אדם חדש לתור מידת הכעס שלו תהיה מידת הכעס הציבורית כפול מינוס 1.

לא התייחסת ל-k של האיש שנכנס.

פורסם
  • מחבר

אממ..לא כ"כ הבנתי למה התכוונת.

אדם נכנס עם רמת כעס 0 ואז נגדיר את מידת הכעס שלו להיות מידת הכעס הציבורית כפול מינוס אחת.

בפועל מידת הכעס שלו(אם נרצה לדוגמא להחזיר את מידת הכעס שלו או של כל אחד אחר) זה יהיה מידת הכעס הפרטית+מידת הכעס הציבורית.

כך שבעצם אדם שרק נכנס לתור יהיה לו 0 (אם נחבר את הכעס הפרטי ליבורי..)

פורסם
  • מחבר

אה..התעלמתי מהעובדה שהוא יכול להיכנס אעם רמת כעס גדולה -0. אז רק לראות שאני לא מפספסת עוד משהו:

כל אדם שנכנס לתור נגדיר את רמת כעסו כ-k ההתחלתי שאיתו נכנס מינוס מידת הכעס המשותפת. ואז רמת הכעס של כל אדם תהיה שלו+המשותפת.

הפעם נכון?

פורסם

בדיוק.

אתה פעם מוריד את המשותף, ופעם מעלה אותו ולכן הערך לא יהיה שלילי.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים