Skip to main content

مساله برج هانوی یکی از مسائل جذاب، و بسیار مشهور از گذشته تا به امروز هستش که به یک مساله کلاسیک در علوم رایانه تبدیل شده‌است و بسیاری از دانشجویان رشته های کامپیوتر و فناوری اطلاعات در کشورمون با این مساله در درس طراحی الگوریتم آشنا شدن … خوب پست رو طولانی نمیکنم صورت مسئله به همراه کد سی اون رو قرار میدم البته این کدی هست که من نوشتم در یه زمانی و روش های متفاوتی هست برای پیاده سازی اون …

 

صورت مسئله برج هانوی :

همانند شکل سه میله داریم. یکی از میله‌ها میله مبدا (A)، دیگری میله کمکی (B) و دیگری میله مقصد (C) است. هدف انتقال تمام دیسک‌ها از میله مبدا به میله مقصد با رعایت شرایط زیر است:

در هر زمان فقط یک دیسک را می‌توان جابجا نمود. نباید در هیچ زمانی دیسکی بر روی دیسک با اندازه کوچکتر قرار بگیرد.

 

این قسمت از توضیحات برج هانوی برگرفته از ویکیپدیا فارسی آن میباشد .

 

Tower_of_Hanoi

 

 

الگوریتم حل برای ریلکس شده مسئله :

توجه داشته باشید که بر اساس قانون اول نمی‌توان به غیر از بالاترین دیسک هر میله، به دیسک دیگری از آن دسترسی پیدا کرد.

حال سوال این است که آیا این مساله به کمک تکنیک بازگشت قابل حل است؟ اصولاً چه مسائلی را می‌توان بازگشتی حل نمود؟

 

2016-03-29_22-21-30

#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 );

  }

}
مهدی مصلائی

Author مهدی مصلائی

سید مهدی مصلائی هستم مهندس برق الکترونیک و علاقه مند به مباحث آی تی و برنامه نویسی باعث افتخار بنده هستش که از مطالب سایت دیدن میکنید و نظراتتون رو در اختیار ما قرار میدید

More posts by مهدی مصلائی

Leave a Reply