تالار گفتگوی میکرو رایانه - مشاهده موضوع - الگوریتم برج هانوی و پیاده سازی آن در C
مشاهده پست های بی پاسخ | مشاهده موضوعهای فعال تاریخ امروز چهارشنبه 15 آگوست, 2018 9:52 pm



پاسخ به موضوع  [ یک پست ] 
 الگوریتم برج هانوی و پیاده سازی آن در C 
نویسنده پیام

عضو: پنجشنبه 03 آوریل, 2008 12:29 pm
پست ها: 146
پست الگوریتم برج هانوی و پیاده سازی آن در C
برج هانوی معمایی است که از 3 میله و N حلقه یا دیسک با اندازه های متفاوت . مطابق شکل زیر می خواهیم تمام N حلقه را از میله اول به یک میله دیگر انتقال دهیم. از میله سوم می توان به عنوان کمکی استفاده کرد
ضمیمه:
hanoi1.jpg


حل این معما دو شرط دارد:
1- در هر انتقال تنها یک حلقه را می توان انتقال داد.
2- در هیچ کدام از میله ها هیچ وقت نمی توان یک حلقه بزرگتر را بر روی یک حلقه کوچکتر قرار داد.


راه حل :

این مسئله با استفاده از الگوریتم بازگشتی حل می شود.

اگر فقط یک دیسک باشد آنگاه آن را به میله مورد نظر انتقال می دهیم.

اگر n>1 باشد برای این کار n-1 دیسک بالای میله 1 را به میله 2 انتقال می دهیم . حالا دیسک پایینی میله 1 را ثابت باقی می ماند. حال دیسک باقی مانده در دیسک 1 را به میله 1 انتقال می دهیم . سرانجام بار دیگر به صورت بازگشتی الگوریتم را فراخوانده تاn-1 دیسک میله 2 را به 3 منتقل کند .
اکنون موفق شدیم n دیسک را از میله 1 به 3 منتقل کنیم .

کد:
#include<stdio.h>
#include<conio.h>

void tower(int,char,char,char);
int main()
{
   int ndisk;
   clrscr();
   cout<<"\nEnter number of disks: ";
   cin>>ndisk;
   tower(ndisk,'A','B','C');
   getch();
   return 0;
}
/**********************************/
// scr = Source , aux = Auxility , dest  = Destination
void tower (int topN,char scr,char aux,char dest)
{
   if(topN==1)
   {
      cout<<"\nDisk 1 from"<<src<<" to"<<dest;
   }
   else {
      tower(topN-1,scr,dest,aux); // scr to aux
      cout<<"\nDisk"<<topN<<"from"<<scr<<"to"<<dest;
      tower(topN-1,aux,scr,dest); // aux to dest
   }
}


برای مشاهده تصاویر و دانلود فایل های ضمیمه ، لازم است در سایت ثبت نام کرده و با نام کاربری خود وارد شوید. در حال حاضر ثبت نام در سایت رایگان است.


چهارشنبه 18 ژوئن, 2008 12:33 pm
مشخصات شخصی
مشاهده پست های قبلی:  نمایش بر اساس  
پاسخ به موضوع   [ یک پست ] 

افراد آنلاین

کاربر حاضر در این تالار : - و 1 مهمان


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

جستجو برای:
پرش به:  
cron
استفاده و نقل از مباحث سایت، فقط با ذکر منبع و لینک سایت میکرورایانه مجاز است.
Copyright © 2006 - 2010 MicroRayaneh - Powered by phpBB © phpBB Group
Valid CSS2 Valid XHTML 1.0
طراحی سایت : میکرو رایانه