Jaman פורסם 2008 בפברואר 16 Share פורסם 2008 בפברואר 16 1* את הבעיה בקלט שלי ניתן לפתור ע"י זה שבודקים בהחלפה של B האם הגענו כבר לרצף Bים, אם כן מפסיקים.2* ו2ד"א הפתרון שלו זה לא העתק מדויק של הפתרון שלי ?1* - לא ממש הבנתי.. אם אין Bים, מה זה משנה מה תבדוק שמה?2* - ההבדל המהותי בין התוכניות שלכם הוא שאצלך לולאה ה for היא:(int i=0; i<BlueP;i++)(ולכן הבאג כשאין כחול ויש בסוף אדום)ואצל אודי היא כך:(int i=0; i<=BlueP;i++)(ולכן הבאג עם הקלט - 'r', 'w', 'b')אני מבין מניין נובע הבאג בשני המקרים, אבל כל נסיון לפתור את זה בצורה אלגנטית הביא למקרה אחר שהתוכנית לא מטפלת בו כרצוי. קישור לתוכן שתף באתרים אחרים More sharing options...
exercise פורסם 2008 בפברואר 16 Share פורסם 2008 בפברואר 16 ואם משנים את השורה של בדיקת ה 'B' ל:if (array == 'b' && i < BlueP)? קישור לתוכן שתף באתרים אחרים More sharing options...
Yehudaa פורסם 2008 בפברואר 16 מחבר Share פורסם 2008 בפברואר 16 קצת שאלה לא קשורה הלכתי קצת לאיבוד ב API אני רוצה לצור אובייקט מטיפוס המחלקה Scanner Scanner scan = new Scanner(System.in איזה מתודה קוראת את התו הראשון בלבד מהקלט ? קישור לתוכן שתף באתרים אחרים More sharing options...
TheReaper פורסם 2008 בפברואר 16 Share פורסם 2008 בפברואר 16 בנוגע לפלט 'w', 'w', 'w', 'r', 'w', 'b'הצלחתי לתקן את הבעיה בעזרת משתנה בוליאניchar[] array= {'w', 'w', 'w', 'r', 'w', 'b'}; int BlueP=(array.Length-1) , RedP=0; char temp ; bool endit; for (int i=0; i<=BlueP;i++) { if (endit=false) if ( array[i]=='b' ) { while (array[BlueP]=='b') BlueP--; temp=array[i]; array[i]=array[BlueP]; array[BlueP]=temp; BlueP--; } if ( array[i]=='r' ) { temp=array[i]; array[i]=array[RedP]; array[RedP]=temp; RedP++; } if (array[i] == 'w') { int tempi = i; while (array[tempi] == 'w') tempi++; if (array[tempi] != 'b') { temp = array[i]; array[i] = array[tempi]; array[tempi] = temp; } else endit=true; } }// for lop for (int i = 0; i < array.Length; i++) Console.Write(array[i] + " "); Console.Read();(כתוב בC# אבל לא אמורה להיות בעיה לתרגם הם ממש דומות)זה אמור להיות עדיין N אם מישהו יכול למצוא קלט שיכתוב פה קישור לתוכן שתף באתרים אחרים More sharing options...
Jaman פורסם 2008 בפברואר 16 Share פורסם 2008 בפברואר 16 ואם משנים את השורה של בדיקת ה 'B' ל:if (array == 'b' && i < BlueP)?לא משנה, עכשיו הבנתי למה התכוונת, קודם לא הייתי מרוכז..באותה מידה אפשר להשאיר את התוכנית כמו שהיא (כלומר מ0 עד BlueP לא כולל), ורק בסופה לבדוק מקרים מסויימים.גם יש אפשרות שכל המערך יהיה 'r', התוכנית בתרגיל הזה צריכה בכלל להתמודד עם קלט כזה? קישור לתוכן שתף באתרים אחרים More sharing options...
TheReaper פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 קבלו תיקון לתוכנית הקודמת שלי... כאשר עושים WHILE בתוך FOR זה בעצם N^2אם רוצים N אז המקרה היחיד שאני מצליח לחשוב עליו זה קודם לעשות FOR שיסדר את האדומיםואז FOR שיסדר את הכחולים שיתחיל ממקום אחד אחרי הRED האחרוןואז עוד FOR ממקום אחרי הR האחרון עד מקום לפני הB הראשון שיסדר את הW וB שנשארו קישור לתוכן שתף באתרים אחרים More sharing options...
exercise פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 זה לא בהכרח נכון, למשל בקוד שלי יש while בתוך ה for, אבל הוא בעצם מקצר את מספר האיטרציות של ה for לכן הסיבוכיות הכוללת היא עדיין O(N), יכול להיות שזה גם המצב בתוכנית שלך (אם היא עובד נכון). קישור לתוכן שתף באתרים אחרים More sharing options...
TheReaper פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 אם המערך מכיל N תאים הWHILE יכול לעבוד N פעמים במקרה הכי ארוךובגלל שהוא מקונן הסיבוכיות היא N^2 קישור לתוכן שתף באתרים אחרים More sharing options...
NJorl פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 חברים, אני לא ממש עקבתי אחרי קטעי הקוד ששלחתם כאןאבל אף מכם לא שם לב שהתרגיל היא למעשה שאלת מיון פשוטה סטנדרטית ביותר במסווה של שאלה כאילו יותר מורכבתתחשבו שיש לכם מערך ובו איברים 1 , 2 ו-3 , כל מספר מייצג צבעיש ב-וויקיפדיה מספר אלגוריתם למיון במקרה הספציפי של דגל הולנד יש רק יוצא מן הכלל אחד לפיו b (צבע כחול) גדול משני הקודים האחרים , בניגוד לסדר ה- ascii הרגילאבל כל יתר השלד של הקוד הוא קוד מיון לכל דבר, מיון בועות הוא הכי מתאים כאן , אמנם לא הכי מהיר אבל הוא קצר קל להבנה ומהיר בסדרות קטנות. קישור לתוכן שתף באתרים אחרים More sharing options...
exercise פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 NJorl אני לא יודע אם זה נאמר פה במפורש, אבל הכוונה פה היא לעשות את המיון בסיבוכיות של O)N( ולכן המיונים הרגילים לא יעזרו פה.TheRepear אתה טועה, אתה מדבר בהכללות בלי לראות מה משמעות, אם ה WHILE ירוץ N פעמים, הוא יקצר את המצביע BlueP ב N ואז הלולאת FOR לא תרוץ יותר. קישור לתוכן שתף באתרים אחרים More sharing options...
Yehudaa פורסם 2008 בפברואר 17 מחבר Share פורסם 2008 בפברואר 17 כן השאלה מותנת במעבר אחד על המערך הווה אומר O)N קישור לתוכן שתף באתרים אחרים More sharing options...
Niseg פורסם 2008 בפברואר 17 Share פורסם 2008 בפברואר 17 אני חושב שאני יודע את הפתרון כל עוד עושים את זה על מערך אחר זה די קל אחרת אני חושב שצריך counting sort עם סיבוכיות של כ3N אולי פחות אבל צריך לעשות איזה מערך תרגום של האינדקסים כי הסדר הוא לא אלפאבתי. הנה פתרון אחד לוקחים מערך ומשתמשים בשני הקצוות שלו כמחסניות מצד ימין w ומצד שמאל r . הבעיה היא בעיקר עם ה blue . הפתרון הכי פשוט זה למלא את המערך ב b ואז זה נותן סיבוכיות של 2n אפשרות נוספת זה להתעלם מה b ואז מקבלים סיבוכיות של n עד סיבוכיות של 2n (בסוף צריך למלא את האמצע בb ) . לא פירטתי יותר מדי אבל אפשר לקחת את זה ולבנות פתרון כן השאלה מותנת במעבר אחד על המערך הווה אומר O)N חייבים רק מעבר אחד או חייבים O(N) ? כי זה לא אותו דבר. כי הO(n) אומר שאין לולאות בתוך הלולאות . מעבר אחד זה מקרה מיוחד של O(N) קישור לתוכן שתף באתרים אחרים More sharing options...
Yehudaa פורסם 2008 בפברואר 17 מחבר Share פורסם 2008 בפברואר 17 נראה לי שאפשר 2n 3n 4n 5n ....... אבל אסור n^2 אבל הנוסח של השאלה היה "במעבר אחד על המערך " [br]פורסם בתאריך: 17.02.2008 בשעה 22:42:07 טוב חברים אחרי שטחנו מכל הכיוונים את הבעיה הנה השאלה המקורית ופתרונה השאלה נמצאת בשקף 14-64 והלאה [attachment deleted by admin] קישור לתוכן שתף באתרים אחרים More sharing options...
david_borohov פורסם 2008 בפברואר 19 Share פורסם 2008 בפברואר 19 קראתי את כל הת'רד עד לפה, ולא הבנתי על מה כל המהומה...זה דיי ברור (לי לפחות) שאם יש לך מערך עם מספר ידוע של סוגי ערכים, ואתה צריך למיין אותו בזמן לינארי, תבצע באקט סורט רגיל...פשוט תיצור מערך נוסף בגודל 3, שבו כל תא ייצג צבע (אדום, לבן או כחול) לפי החלטה שלך.במעבר הראשון על המערך פשוט עבור כל צבע שאתה רואה , תעשה ++ על המקום המתאים שלו במערך.לאחר מכן, כאשר יש לך ביד מערך המייצג את מספר המופעים של כל צבע, תעבור העל המערך המקורי שוב, ו"תשתול" את המופעים מתוך מערך העזר...שים לב שהדבר מתבצע בזמן לינארי.מקווה שעזרתי. קישור לתוכן שתף באתרים אחרים More sharing options...
Jaman פורסם 2008 בפברואר 19 Share פורסם 2008 בפברואר 19 1) כבר הציעו את זה בעמוד הראשון.2) שים לב שהדרישה היא למעבר אחד על המערך (בקובץ שudi הביא). קישור לתוכן שתף באתרים אחרים More sharing options...
Recommended Posts
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.