יש לך רכיב עם 4 כניסות שמוציא אחד אם יש לו 2 כניסות ומעלה שהן אחד. תבנה ממנו רכיב שמוציא 1 אם:
- יש לו יותר מכניסה אחת שהיא '1'
- יש לו יותר מ3 כניסות שהן '1'
תשובות
הוסף תשובה
|
לצפיה בתשובות
נובמבר 2022
1) 5 רכביבם
2) 7 רכיבים
הערה: לעשות טבלת אמת ולשים במפת קרנו יעזור לפתרון אבל לא חובה
נובמבר 2023
אני לא בטוח אם השאלה נוסחה כראוי אז אענה על כל האופציות:
נסמן כניסות כ-A,B,C,D
- אם יש לו לפחות כניסה אחת שהיא '1': [3 רכיבים]
רכיב אחד מקבל 2 כניסות שהן A ושתיים שהן B (דולק אם לפחות אחת היא 1)
רכיב שני מקבל 2 כניסות שהן C ושתיים שהן D (דולק אם לפחות אחת היא 1)
רכיב שלישי שמקבל 2 כניסות מרכיב אחד ושתי כניסות מרכיב שני (דולק אם אחד מהרכיבים דולק, כלומר דולק אם לפחות אחת הכניסות היא 1)
- אם יש לו יותר מכניסה אחת שהיא '1': [רכיב אחד]
זה פשוט הרכיב הנתון (שדולק עם לפחות 2)
- אם יש לו לפחות 3 כניסות שהן '1': [5 רכיבים]
רכיב אחד שמקבל A,B ו2 אפסים (דולק רק אם שניהם 1)
רכיב שני שמקבל B,C ו2 אפסים (דולק רק אם שניהם 1)
רכיב שלישי שמקבל C,D ו2 אפסים (דולק רק אם שניהם 1)
רכיב רביעי שמקבל D,A ו2 אפסים (דולק רק אם שניהם 1)
רכיב חמישי שמקבל את המוצאים של 4 הרכיבים הקודמים (דולק רק אם לפחות 2 רכיבים דלקו, כלומר דולק רק אם לפחות 3 כניסות היו 1)
- אם יש לו יותר מ3 כניסות שהן '1': [3 רכיבים]
רכיב אחד שמקבל A,B ו2 אפסים (דולק רק אם שניהם 1)
רכיב שני שמקבל C,D ו2 אפסים (דולק רק אם שניהם 1)
רכיב שלישי שמקבל את מוצאי 2 הרכיבים הקודמים ו2 אפסים (דולק רק אם 2 הרכיבים הקודמים דלקו, כלומר דולק רק אם 4 כניסות הן 1)
1. יש 2 רשימות מקושרות. לבדוק האם יש איבר משותף. למצוא אותו לכתוב קוד. בסיבוכיות זמן ומקום מינימאליות.
2. לבנות class לשמירת נתונים בצורה key->value. עם מתודות set,get,reset. reset אמור להגדיר כל האיברים לאותו ערך תוך О(1). גם set,get אמורים לעבוד בО(1). מתודה init(n) בO(n)
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2022
יש להגדיר משתנים כמו timestamp ו-default_value. כל פעם כשמוסיפים איבר חדש יש לקדם את timestamp ולשמור את ערכו יחד עם האיבר. ב-reset יש לשנות default_value ולשמור timestamp שלו, זה O(1). ב-get יש לבדוק timestamp של איבר, להשוות אותו עם timestamp של default_value ולהחזיר את החדש יותר.