تبلیغات


الگوریتم و کد برج های هانوی در ++C

اشتراک گذاری
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

 

tower of hanoi solution

مساله ی برج های هانوی (towers of Hanoi) از مساله های معروف در زمینه ی اگوریتم های بازگشتی است که در آن تعدادی دیسک را باید ازمیله ای به میله ی دیگر منتقل کرد.

شرایط اولیه: ۳ میله که یکی از آنها حاوی تعدادی دیسک  است که از پایین به بالا از بزرگ به کوچک قرار گرفته اند.

مسآله: همه ی دیسک ها را باید به یک میله ی خالی منتقل کنید.

قوانین:

۱-هنگام حرکت دادن دیسکها هیچ دیسکی روی دیسک کوچکتر از خود قرار نگیرد.

۲-درهر بار حرکت دادن دیسک ها نمیتوان بیش از یک دیسک را منتقل کرد.

حل: فرض کنیم n دیسک داریم و میله ها را origin , middle , destination مینامیم که ابتدا دیسکها در origin قرار دارند وباید به destination منتقل شوند. فرض کنیم (H(n تابعی باشد که این کار را انجام میدهد n دیسک را به روش زیر منتقل میکنیم:

۱-با(H(n-1  ابتدا n-1 دیسک بالایی از میله ی origin را به middle منتقل میکنیم.

۲-آخرین دیسک موجود در origin را به destination منتقل میکنیم.

۳-با(H(n-1  درآخر n-1 دیسک موجود در میله ی origin را به destination منتقل میکنیم.

پس داریم:(H(n)=H(n-1)+1+H(n-1 یعنی H(n)=2H(n-1)+1

کد این مساله به زبان سی پلاس پلاس( ++C):

جالب است بدانیم که جواب تابع  بازگشتی در این مساله برابر است با: hanoi(n)=(2^n)-1 یعنی تابع به اندازه ی hanoi(n)=(2^n)-1 فراخوانی میشود, پس با انجام

همین تعداد حرکت دیسکها از origin  به destination  منتقل میشوند.


تبلیغات:

۱۶ دیدگاه

  • با Dew اجرا میشه خط اول پاک کنید به جای متغییر or هرجا داشتید مثلا ori بذارید درست میشه

  • خواهش میکنم بیشتر راجع به درس برنامه نویسی پیشرفته سوال و حل تمرین بذارید..من با برنامه نویسی مشکل دارم شدید..ممنون

  • ایا کسی open gl کار کرده و طراحی اسم با اسپیلاین (توابع بیزیه) رو بلده؟؟؟

  • کد مشابه و ساده تر!!!

  • از چه برنامه ای برای اجراش استفاده کنیم؟
    با تشکر

  • فرهاد دلیرانی

    دقیقا کدوم خط خطا می ده ؟ کد اون خط بذار و متن خطا رو هم همین طور.

  • سلام…
    چرا استفاده نکنم ؟
    ببخشید اینا میپرسم ولی سینتکس چیه؟میشه یه توضیح بدید…
    شرمنده

  • سلام خسته نباشید
    آقای دلیرانی ببخشید کد برج هانوی به زبن سی شارپ یا سی پلاس پلاس؟
    من میخوام اجراش را در dev c++بگیرم ولی اجرا نمیده در خط اول و خط چهارم خطا میده…
    اگه بخوام به زبان سی شارپ بنویسم چیکار باید کنم؟
    ممنون اگه کمکم کنید…

    • محمد جمالی

      اکیدا توصیه میکنم از dev استفاده نکنید

      اما برای کامپایل خط اول را حذف کنید

      برای c# کافیست سینتکس آن را عوض کنید

  • سلام خسته نباشید اگه بخواهیم برج هانوی را بصورت گرافیکی بنویسیم باید چیکار کنیم با c#؟؟؟؟؟؟؟؟؟؟؟؟؟
    میشه کمکم کنید
    ۱دنیا ممنون

نظر خود را بنویسید.

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *