בהצלחה לכל הנבחנים מחר במדעי המחשב :) - איך היה? תגובות ע"מ 4 - עמוד 4 - כללי - HWzone פורומים
עבור לתוכן
  • צור חשבון

בהצלחה לכל הנבחנים מחר במדעי המחשב :) - איך היה? תגובות ע"מ 4


MasterDK

Recommended Posts

  • תגובות 133
  • נוצר
  • תגובה אחרונה

זה שT לא עץ ריק ולא עלה לא אומר שאחד מהתתי עצים שלו לא יכול להיות ריק.

אתה רציני ?

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

אומר

אם לא עץ ריק(תת עץ שמאלי(T) וגם לא עץ ריק(תת עץ ימני(T))

החזר אמת

אחרת

החזר שקר

קישור לתוכן
שתף באתרים אחרים

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

אם אחד מהם ריק והשני לא, יצא לך false וגם true, ז"א false,והוא לא יחשב כעלה אבל יהיה לו תת עץ ריק.

בקיצור היית צריך לבדוק 2 מקרים

פעם שהשמאלי ריק והימני לא, ואז צריך לזמן את איחוד_מסלול רק על אותו עץ שלא ריק

ולהפך.

קישור לתוכן
שתף באתרים אחרים

פתרתי את זה בג'אווה, לכן הייתי צריך לממש את הפעולה.

ככה כתבתי את זה, אחד לאחד:


{
boolean left=false;
boolean right=false;
if (t.getLeft()==null&&t.getRight()==null)
return true;
if (t.getLeft()!=null)
left=t.getLeft().getInfo()==t.getInfo()&&onePath(t.getLeft());
if (t.getRight()!=null)
right=t.getRight().getInfo()==t.getInfo()&&onePath(t.getRight());
return(left||right);
}
	public static boolean onePath(BinTree t)

מקווה שזה נכון.

אם משהו מוצא בעיה, שידבר.

קישור לתוכן
שתף באתרים אחרים

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

מקווה שאני צודק.

קישור לתוכן
שתף באתרים אחרים

היה קל ;D

מקווה שלא יהיו טעויות שטוטיות... (מה שתמיד יהיה לי :smile1:)

עשיתי בפסקל + מודלים...

מודלים היה ממש קל (ואני חשבתי שאני לא הולך לדעת שם כלום...)

קישור לתוכן
שתף באתרים אחרים

לגבי שאלה 3.

השאלה מתחילה ככה: נתון עץ בינארי T לא ריק.

לכן לא צריך לבדוק אם העץ ריק.

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

יש לי הוכחה אם צריך.

קישור לתוכן
שתף באתרים אחרים

העץ עצמו לא ריק, אבל כאשר אתה מסתכל על זה רקורסיבית, אתה חייב לבדוק את המיקרה שהוא עלה.


{
boolean left=false;
boolean right=false;
if (t.getLeft()==null&&t.getRight()==null)
return true;
if (t.getLeft()!=null)
left=t.getLeft().getInfo()==t.getInfo()&&onePath(t.getLeft());
if (t.getRight()!=null)
right=t.getRight().getInfo()==t.getInfo()&&onePath(t.getRight());
return(left||right);
}
	public static boolean onePath(BinTree t)

שוב, משהו רואה פה בעיה?

זו שאלה מספר 3.

קישור לתוכן
שתף באתרים אחרים

יש כבר פתרונות של המבחן?

אני פתרתי את 1,2,18,20 נראה לי. (1 רקורסיה סוד,2 מסעדה, 18 תערוכה, 20 מעקב אחרי מחלקות יורשות)

ברקורסיה גיליתי שהפעולה sod1 מגלה כמה פעמים צריך לחלק מספר בשביל לאפס אותו (כמובן שהוא מתאפס רק בגלל שזה Int)

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

אני צודק?

קישור לתוכן
שתף באתרים אחרים

אפחד לא עשה שאלון 222?

סעמק יש לי שכתוב אבל הבוחן הניטרלי האידיוט לא יודע אנגלית...

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

קישור לתוכן
שתף באתרים אחרים

יש כבר פתרונות של המבחן?

אני פתרתי את 1,2,18,20 נראה לי. (1 רקורסיה סוד,2 מסעדה, 18 תערוכה, 20 מעקב אחרי מחלקות יורשות)

ברקורסיה גיליתי שהפעולה sod1 מגלה כמה פעמים צריך לחלק מספר בשביל לאפס אותו (כמובן שהוא מתאפס רק בגלל שזה Int)

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

אני צודק?

לפי מה שאני הבנתי, סוד1 מחזיר את ההפרש בין מספר הספרות של שני המספרים.

וסוד2 מחזיר את ההפרש הכי גבוה במערך בין 2 איברים סמוכים(מהאיבר הk עד הסוף)

קישור לתוכן
שתף באתרים אחרים

לפי מה שאני הבנתי, סוד1 מחזיר את ההפרש בין מספר הספרות של שני המספרים.

וסוד2 מחזיר את ההפרש הכי גבוה במערך בין 2 איברים סמוכים(מהאיבר הk עד הסוף)

כע זה גם מה שאני כתבתי

קישור לתוכן
שתף באתרים אחרים

ארכיון

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


×
  • צור חדש...