29 مارس برج هانوی برای N دیسک | یک الگوریتم معروف و کد آن به زبان C
مساله برج هانوی یکی از مسائل جذاب، و بسیار مشهور از گذشته تا به امروز هستش که به یک مساله کلاسیک در علوم رایانه تبدیل شدهاست و بسیاری از دانشجویان رشته های کامپیوتر و فناوری اطلاعات در کشورمون با این مساله در درس طراحی الگوریتم آشنا شدن … خوب پست رو طولانی نمیکنم صورت مسئله به همراه کد سی اون رو قرار میدم البته این کدی هست که من نوشتم در یه زمانی و روش های متفاوتی هست برای پیاده سازی اون …
صورت مسئله برج هانوی :
همانند شکل سه میله داریم. یکی از میلهها میله مبدا (A)، دیگری میله کمکی (B) و دیگری میله مقصد (C) است. هدف انتقال تمام دیسکها از میله مبدا به میله مقصد با رعایت شرایط زیر است:
در هر زمان فقط یک دیسک را میتوان جابجا نمود. نباید در هیچ زمانی دیسکی بر روی دیسک با اندازه کوچکتر قرار بگیرد.
این قسمت از توضیحات برج هانوی برگرفته از ویکیپدیا فارسی آن میباشد .
الگوریتم حل برای ریلکس شده مسئله :
توجه داشته باشید که بر اساس قانون اول نمیتوان به غیر از بالاترین دیسک هر میله، به دیسک دیگری از آن دسترسی پیدا کرد.
حال سوال این است که آیا این مساله به کمک تکنیک بازگشت قابل حل است؟ اصولاً چه مسائلی را میتوان بازگشتی حل نمود؟
#include <iostream> #include <stdio.h> #include <conio.h> using namespace std; void hanoi(int,char,char,char); int main() { int n; system("cls"); cout<<"\n Enter number of disks <<<::: "; cin>>n; hanoi(n,'A','B','C'); /*Calling Function*/ getch(); return 0; } void hanoi( int nDisk, char start, char temp, char finish ) { if( nDisk == 1 ) { cout << start << " --> " << finish << endl; } else { hanoi( nDisk - 1, start, finish, temp ); cout << start << " --> " << finish << endl; hanoi( nDisk - 1, temp, start, finish ); } }
No Comments