לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #15  
ישן 18-08-2006, 16:31
צלמית המשתמש של ם_O
  משתמש זכר ם_O ם_O אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 465
כמעט :)
בתגובה להודעה מספר 14 שנכתבה על ידי Urikiller שמתחילה ב "פתרתי"

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

זה הפתרון שחשבת עליו?

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

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



קוד:
int MaxSubArr(int len, int *first) { int biggest = 0 int sum = 0; int i = 0; for(i = 0; i < len; ++i) { sum += *(first + i); if(sum < 0) { sum = 0; } biggest=biggest > sum ? biggest:sum; } return biggest; }

_____________________________________
Any sufficiently advanced bug is indistinguishable from a feature

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:38

הדף נוצר ב 0.10 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר