مساله ي برجهاي هانوي كه مي دونيد چيه؟كه nتا ديسك رو از يك برج به يك برج ديگه ببريم .حداقل تعداد حركتها هم ميشه 2 به توان n منهاي 1
من يه برنامه ميخوام كه حركت n ديسك رو روي 4 (دقت كنيد 4 برج) براي حركت دادن ديسك ها از برج 1 به برج 4 با حد اقل تعداد حركت مشخص كند.
برجهاي هانوي:
سه برج كه در ابتدا روي يكي از آنها n ديسك وجود دارد كه پايين ترين ديسك,بزرگ ترين ديسك است وديسكها به ترتيب اندازه قرار دارند
بايد با دو شرط اين ديسكها را از برج 1 به برج 3ببريم
1-در هر حركت فقط يكي از ديسكها را مي توانيم جابجا كنيم.
2-ديسك هاي بزرگتر روي ديسك كوچكتر از خود قرار نمي گيرند .
این چیزی که شما میخوایی به Reve's Puzzle معروفه . متاسفانه من کدی براش ندارم
عزیزم فردابرات برج هانوی رومی فرستم.اتفاقاهفته پیش استادمااین روبرای ماحل کرد.
یک تابع بازگشتیه که دو بار خودش رو فراخوانی میکند. با سه تا پارامتر.
اگه نتونستی خودت حلش کنی فردا سورسش رو برات میزارم.
برج هانوی تو سایت نمونه زیاد داره ولی ایشون برج هانوی رو نمیخواد
دوستان لطفا از استاداتون در مورد اين مساله يا حد اقل الگوريتمش بپرسيد الگوريتم سه تا برج خيلي سادس رو كاغذم مي شه نوشت اگه مي شه يكي برا اين سؤال منو يه راهنمايي بكنه.
(۱۵-دى-۱۳۸۶, ۱۹:۵۹:۵۱)zacaria نوشته است: [ -> ]یک تابع بازگشتیه که دو بار خودش رو فراخوانی میکند. با سه تا پارامتر.
اگه نتونستی خودت حلش کنی فردا سورسش رو برات میزارم.
تعداد دیسکها بصورت آرگومان به تابع داده میشه توسط یوزر.اگر می خواید با حداقل جابجایی باشه فکر کنم بهتر ه از روش D&c الگوریتمش حل بشه.اول باید بتونید تابع زمانیش رو بدست بیارید.تابع زمانیش تتای 2به توان nست.البته مطمئن نیستم که نشه از روشهایDp یا Greedy حلش کرد.اما فکر کنم بهترین روش همون D&c باشه.
سلاممم !!
در برج هانوی با 4 میله (a , b , c , d) دو تا دیسک رو به را حتی میشه جابه جا کرد . یعنی اگه 2تا دیسک روی میله ی aباشه اولی رو به میله ی c و دومی رو به میله ی d انتقال میدیم پس برای بیشتر از 2 دیسک باید برنامه نوشته بشه فرمولش اینجوریه:
اگر (n=1) حلقه را جابه جا کن .
اگر ( n=2)حلقه ی اول رو روی cودومی را روی d بزار .
اگر (n>2)دستورانتقال (n-2)حلقه مثل برج هانوی 3 مبله است با 3 یا 4 حلقه حل کنین تا متوجه بشین
باسلام
برج هانوی با چهار میله لطفا برام بفرستید
mahdi.shamshiri@hotmail.com
با تشکر
الگوریتم برج هانوی به صورت بازگشتی:
توضیحات در آدرس زیر
الگوریتم برج هانوی
کد:
در سی
void tower (char fromp,char top,char help,int n)
{
if (n == 1)
printf("move disk 1 form %c to %c \n",fromp,top);
else
{
tower(fromp,help,top,n-1);
printf("move disk %d from %c to %c \n",n,fromp,top);
tower(help,top,fromp,n-1);
}
}
void main()
{
clrscr();
int n;
printf("Enter number of disks : \n");
scanf("%d",&n);
tower('A','B','C',n);
getch();
}