30-01-2005, 19:54
|
|
|
|
חבר מתאריך: 28.10.01
הודעות: 10,153
|
|
פתרון אפשרי לבעיית הווקטורים
בתגובה להודעה מספר 1 שנכתבה על ידי chaild שמתחילה ב "מבקש עזרה בשיעורים. מציאת נוסחת נסיגה ופתרונה ל-2 רקורסיות"
נקודת ההתחלה שלנו היא פשוטה :
עבור וקטור שגודלו 1 הסכום המקסימאלי הוא בוודאי האיבר היחיד שבתוכו.
עבור וקטור בגודל n ,נפצל אותו לשני חלקים : האיבר הn והוקטור בגודל n-1 שאינו מכיל את האיבר הn.
יש שתי אפשרויות :
1. הוקטור המקסימאלי מוכל לגמרי בתוך הוקטור של n-1.
2. הוקטור המקסימאלי מכיל את האיבר הn. זה יכול להיות האיבר הn לבדו,או האיבר n+אחד או יותר מהאיברים שבוקטור n-1.
וצריך כמובן לבחור את המקסימום מבין 1 ו2.
בשביל לא לחוזר ולחשב את הסכומים כל פעם,משתמשים במערך דו מימדי ששומר את הסכומים שכבר חישבנו. הפונקציה sum עושה את העבודה הנ"ל.
ועל כן,האלגוריתם הרקורסיבי יראה ככה :
קוד:
f(arr,i,j)
{
if (i==j) return(arr[i]);
else
{
current_max=f(arr,i+1, j);
for(itertor=i;itertor<=j;++itertor)
{
if (check_sum=sum(i,itertor)>current_max) current_max=check_sum;
}//for
return(current_max);
}//else
}//f
_____________________________________
|