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

מנהל: The Architect

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

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

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

קרובב

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

14,24,27,35,40
eyalwu
 
הודעות: 19
הצטרף: 17:52 09/01/2009

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

לגבי שאלה 3:
תחשוב על תנאי העצירה
רמז:2 תנאי עצירה, אחד קשור ליחס בין n לk והשני קשור למתי צריך להדפיס.
לגבי הקריאה הרקורסיבית, יש 2 קריאות, תחשוב איך תקרא להן ככה שתתקדם
לקראת תנאי העצירה. שים לב גם לאיזה צד של הString אתה מוסיף
הפתרון שלי יצא 8 שורות, נראה לי אפשר אפילו יותר קצר
aner2005
 
הודעות: 34
הצטרף: 21:19 26/11/2008

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

הודעהעל ידי 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)
}
eyalwu
 
הודעות: 19
הצטרף: 17:52 09/01/2009

הודעהעל ידי 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 וכו'

סה"כ נראה לי עדיף להמנע מלערבב לולאות ורקורסיה
aner2005
 
הודעות: 34
הצטרף: 21:19 26/11/2008

עבודה יפה

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

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

תוכל לתת כיוון כללי לגבי הרעיון ואיך ניגשת לקוד?
eyalwu
 
הודעות: 19
הצטרף: 17:52 09/01/2009

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

היי,

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

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

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

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

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

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

מקווה שהייתי ברורה, בהצלחה :)
איילת
ayeletd
 
הודעות: 27
הצטרף: 19:25 17/11/2008


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

מי מחובר

משתמשים הגולשים בפורום זה: אין משתמשים רשומים ואורח אחד

cron