ABA


"איך מגיעים לאלגוריתם של Towers of Hanoi ב C++?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15445 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15445
Roni
חבר מתאריך 28.2.06
26514 הודעות, 4 פידבק
   01:50   22.08.09   
אל הפורום  
  איך מגיעים לאלגוריתם של Towers of Hanoi ב C++?  
 
   הגעתי לתוצאה, אבל הרוב בעזרת הספר ... כלומר אם היו נותנים לי את הבעייה לא הייתי מגיע לאלגוריתם לבד....
מה הדרך חשיבה ??

הבנתי איך זה עובד והכל אבל עדיין לא מבין איך הם חשבו על האלגוריתם הזה...


הנה האלגוריתם:
#include <iostream>
using std::cout;
using std::endl;
#include <iomanip>
using std::setw;


void MoveTower(int, int, int, int);

int main()
{
MoveTower(3,1,3,2);
system ("pause");
return 0;
}
void MoveTower(int disk,int source,int dest,int spare)
{
if (disk >0)
{
MoveTower(disk - 1, source, spare, dest);
cout<< source << setw(4)<<" ----->" <<setw(4)<< dest<< endl;
MoveTower(disk - 1, spare, dest, source);

}

}

זה פשוט משגע אותי ....

תודה לעוזרים


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  תשמע, אתה שואל שאלה לא ממש קשורה. Deuce  22.08.09 19:28 1

       
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   19:28   22.08.09   
אל הפורום  
  1. תשמע, אתה שואל שאלה לא ממש קשורה.  
בתגובה להודעה מספר 0
 
אין פה שום קשר למעשה ל-C++, זה נטו קשור לאלגוריתם ולהבנת נכונותו.
אז אני אנסה להסביר את נכונות האלגוריתם.

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

איך זה נראה ב-C++?
אם יש עוד דיסקים אז
קרא לרקורסיה עם כמות דיסקים קטנה ב-1 (מעבירה n מוטים למוט האמצע).
העבר את הדיסקית הגדולה ביותר למוט היעד.
העבר את הדיסקיות על המוט האמצעי למוט היעד.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net