פתרון מועד ב' 2001 (סימסטר א')

מנהל: The Architect

נעול
ariels
הודעות: 25
הצטרף: 22:02 25/11/2008

פתרון מועד ב' 2001 (סימסטר א')

שליחה על ידי ariels » 15:42 12/03/2009

מי שפתר את המבחן שיעלה שובות שניתן יהיה להשוות.
הפתרון שלי:
שאלה 1, שורות: 14, 24, 35, 40, 41.
למישהו יש מושג איך לפתור את שאלה 3? כיווון? לפי השורות שכתובות זה נראה שמכווינים אותך לעשות ריקורסיה, אבל אין לי מושג איך?
בשאלה 4: א' מדפיס 5,1 וב-ב': שגיאה בזמן ריצה?

eyalwu
הודעות: 19
הצטרף: 17:52 09/01/2009

קרובב

שליחה על ידי eyalwu » 18:20 12/03/2009

14,24,27,35,40

aner2005
הודעות: 34
הצטרף: 21:19 26/11/2008

שליחה על ידי aner2005 » 21:09 12/03/2009

לגבי שאלה 3:
תחשוב על תנאי העצירה
רמז:2 תנאי עצירה, אחד קשור ליחס בין n לk והשני קשור למתי צריך להדפיס.
לגבי הקריאה הרקורסיבית, יש 2 קריאות, תחשוב איך תקרא להן ככה שתתקדם
לקראת תנאי העצירה. שים לב גם לאיזה צד של הString אתה מוסיף
הפתרון שלי יצא 8 שורות, נראה לי אפשר אפילו יותר קצר

eyalwu
הודעות: 19
הצטרף: 17:52 09/01/2009

עוד פעם רמזים?

שליחה על ידי eyalwu » 21:53 12/03/2009

המבחן ביום ראשון
הרמזים האלו לא יעזרו לאף אחד.
מאד יעזרו לעומת זאת תשובות.

נודה למשהו קונקרטי.

זה הפתרון שלי
אם יש תיקונים, אנא,

קוד: בחירת הכל

if (s.length() == k);
SOP (s);
else
for (int i=1; i<n;i++) {
if (s.indexOf(i( != -1)
subsetsofsize(n,k,s+i)
}

aner2005
הודעות: 34
הצטרף: 21:19 26/11/2008

שליחה על ידי aner2005 » 23:39 12/03/2009

OK הנה הפתרון שלי -

קוד: בחירת הכל

if (k==0)
System.out.println(s);
else if (n>=k)
{
subsetsOfSize(n-1,k,s);
s=""+n+s;
subsetsOfSize(n-1,k-1,s);
}
הבעיה העיקרית בפתרון שלך זה שהוא מאפשר להדפיס את אותה ספרה יותר מפעם אחת
לדוגמא ידפיס גם את 111 ו112 וכו'

סה"כ נראה לי עדיף להמנע מלערבב לולאות ורקורסיה

eyalwu
הודעות: 19
הצטרף: 17:52 09/01/2009

עבודה יפה

שליחה על ידי eyalwu » 00:46 13/03/2009

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

תוכל לתת כיוון כללי לגבי הרעיון ואיך ניגשת לקוד?

ayeletd
הודעות: 27
הצטרף: 19:25 17/11/2008

שליחה על ידי ayeletd » 15:50 14/03/2009

היי,

בקשר לשאלתך איך לחשוב בכלל על כיוון לפתרון.

השאלה הזו על כל מיני תתי מחרוזות / שחלופים/ פרמוטציות הופיעו המון בתרגולים.

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

בכל מקרה הרקורסיה עצמה תבחן שתי אופציות -
- לקחת את הערך ועכשיו אתה מחפש את המשך הצירוף עם ערך אחד פחות
subsetsOfSize(n-1,k-1,s);

- לא לקחת את הערך ועכשיו אתה מחפש את הצירוף כולו שעדיין ריק
subsetsOfSize(n-1,k,s);

תעבור על הקודים במצגות של התרגולים זה ממש חוזר על עצמו בהרבה שאלות

מקווה שהייתי ברורה, בהצלחה :)
איילת

נעול

חזור אל “- מבוא למדעי המחשב”