תכתוב פוקנציה שמקבלת רשימה מקושרת וקודקוד ומוחקת אותו מהרשימה
תשובות
הוסף תשובה
|
לצפיה בתשובות
פברואר 2024
אם head הוא הקודקוד המבוקש, להחזיר head->next
אם לא
Prev=head->next
Head=head->next
עד שמגיעים למצב שבו head הוא הקודקוד המבוקש. ואז
Prev->next=head->next
Delete head
נתון מערך ממוין (מתחיל ב-1) עם ספרה חסרה (אינטג'רים). החזר את הספרה החסרה ב-(n)O
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2023
כמה אופציות:
חיפוש בינארי ואז לפי האינדקס כאשר הוא קטן בשתיים מהספרה.
לסכום את המערך, לסכום מערך ללא ספרה חסרה (או להשתמש בנוסחה 2/(n+1)n) ולחסר ביניהן
יש לכם 100 מטבעות זהב וחמישה פריטים הממוספרים מ 1 עד 5 .
כל אחד בתורו מגיע עם הצעה אך לחלק את המטבעות של זהב בינהם. במידה ומתקבל רוב אז המטבעות זהב מתחלקות במידה ואין רוב וההצעה נפסלת והפריט נפסל ולא משתתף יותר בהחלטה.
השאלה היא אך בסוף תהיה החלוקה של מטבעות הזהב?
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2024
הבעיה שהצגת היא וריאציה של "בעיית השודדים הדמוקרטיים", בה חמישה שודדים צריכים לחלק ביניהם אוצר של 100 מטבעות זהב. כל שודד מציע חלוקה, והיא נדחית אם רוב השודדים (שלושה או יותר) לא מסכימים לה. אם הצעה נדחית, השודד שהציע אותה מודח מהמשחק ולא ישתתף בחלוקת האוצר.
הפתרון לבעיה זו מתבסס על ההבנה שכל שודד רוצה למקסם את הרווח שלו, תוך כדי שמירה על מינימום הקולות הנדרשים לאישור ההצעה. נניח שהשודדים פועלים בסדר האלפביתי (a, b, c, d, e), כאשר a מציע ראשון.
אם נותר שודד אחד (e), הוא יקח את כל הזהב.
אם נותרו שני שודדים (d, e), d יקח את כל הזהב, כי e לא יכול להצביע נגדו.
אם נותרו שלושה שודדים (c, d, e), c צריך רק את הצבעתו של אחד מהם כדי לאשר את החלוקה. לכן, הוא יכול להציע 99 מטבעות לעצמו ומטבע אחד לאחד מהשניים (לדוגמא, ל-d), והם יסכימו כדי לקבל משהו ולא כלום.
אם נותרו ארבעה שודדים (b, c, d, e), b יודע שאם הוא יודח, c יקח כמעט את כל האוצר. לכן, הוא יציע מטבע אחד ל-d ומטבע אחד ל-e (או ל-d), שיתמכו בו כדי לא להישאר בלי כלום.
אם כולם נותרים (a, b, c, d, e), a יודע שאם הוא יודח, b יקח הכל כמעט. לכן, הוא יציע מטבע אחד ל-c ומטבע אחד ל-e, שיתמכו בו כדי לא להישאר בלי כלום.
לסיכום, החלוקה הצפויה להתקבל בסוף היא ש-a מקבל 98 מטבעות, c מקבל מטבע אחד, ו-e מקבל מטבע אחד.