فراز

بچه های IT پیام نور کرمانشاه

فراز

بچه های IT پیام نور کرمانشاه

hanoi

برج هانوی , معمایی است که از سه میله و N دیسک با اندازه های متفاوت تشکیل می شود .اگر فرض شود که  دیسکی روی یک میله باشد , فقط دیسکی که قطر آن کوچکتر است می تواند بالای آن قرار گیرد مسئله چنین است که هر بار فقط یک دیسک انتقال یابداین مسئله با استفاده از یک الگوریتم باز گشتی حل می شود. این معما در درسهایی همچون ساختمان گسسته و ساختمان داده مورد بحث و بررسی قرار می گیرد . این برنامه همچنین یکی از سوال های کتاب دیتل نیز هست .

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

 

/* hanoi.cpp solves the Towers of Hanoi puzzle


 recursively. 
 * 
 * Input:  numDisks, the number of disks to be moved 
 * Output: a sequence of moves that solve the puzzle */ 

#include <iostream.h> 
#include <conio.h> 


void Move(int n, char source, char destination, char spare); 
int count = 0; 

int main() 
{ 
  const char PEG1 = 'A',            // the three pegs 
             PEG2 = 'B', 
             PEG3 = 'C'; 

  cout << "This program solves the Hanoi Towers puzzle. "; 

  cout << "Enter the number of disks: "; 
  int numDisks;                     // the number of disks to be moved 
  cin >> numDisks; 
  cout << endl; 

  Move(numDisks, PEG1, PEG2, PEG3); // the solution 
 // getch(); 
  return 0; 

} 

/* Move is a recursive function to solve the 
 * Towers of Hanoi puzzle. 
 * 
 *  Receive: n, the number of disks to be moved; 
 *           source, peg containing disk to move 
 *           destination, peg where to move disk 
 *           spare, peg to store disks temporarily, 
 *  Output:  A message describing the move 
 **************************************************/ 

void Move(int n, 
          char source, char destination, char spare) 
{ 
  if (n <= 1)                      // anchor 
 cout << "Move the top disk from " << source 
         << " to " << destination << endl; 
  else 
  {                                // inductive case 
    Move(n-1, source, spare, destination); 
    Move(1, source, destination, spare); 
    Move(n-1, spare, destination, source); 
  } 
}

/* hanoi.cpp solves the Towers of Hanoi puzzle

 

 

 

 

 

 moji

 * 
 * Input:  numDisks, the number of disks to be moved 
 * Output: a sequence of moves that solve the puzzle */ 

#include <iostream.h> 
#include <conio.h> 


void Move(int n, char source, char destination, char spare); 
int count = 0; 

int main() 
{ 
  const char PEG1 = 'A',            // the three pegs 
             PEG2 = 'B', 
             PEG3 = 'C'; 

  cout << "This program solves the Hanoi Towers puzzle. "; 

  cout << "Enter the number of disks: "; 
  int numDisks;                     // the number of disks to be moved 
  cin >> numDisks; 
  cout << endl; 

  Move(numDisks, PEG1, PEG2, PEG3); // the solution 
 // getch(); 
  return 0; 

} 

/* Move is a recursive function to solve the 
 * Towers of Hanoi puzzle. 
 * 
 *  Receive: n, the number of disks to be moved; 
 *           source, peg containing disk to move 
 *           destination, peg where to move disk 
 *           spare, peg to store disks temporarily, 
 *  Output:  A message describing the move 
 **************************************************/ 

void Move(int n, 
          char source, char destination, char spare) 
{ 
  if (n <= 1)                      // anchor 
 cout << "Move the top disk from " << source 
         << " to " << destination << endl; 
  else 
  {                                // inductive case 
    Move(n-1, source, spare, destination); 
    Move(1, source, destination, spare); 
    Move(n-1, spare, destination, source); 
  } 
}
    
نظرات 4 + ارسال نظر
همیشه آنلاین یکشنبه 14 شهریور 1389 ساعت 12:15 http://www.hamisheonline.com

سلام
وبلاگ خوب و بروزی دارید
بروز نگهداری وبلاگ کار سختیه خسته نباشید
بسیار خوشحال میشم که به وب سایت ما هم سری بزنی
ما یک گروه هستیم که تو زمینه کارشناسی ارشد فراگیر پیام نور به دانشجوها خدمات رایگان ارائه می دهیم
دوست داشتی با هم تبادل لینک داشته باشیم
دانلود رایگان منابع و سوالات ارشناسی ارشد فراگیر
همیشه آنلاین
www.hamisheonline.com

sms asheghaneh یکشنبه 14 شهریور 1389 ساعت 12:24 http://www.peyman1991.blogfa.com

sA L Am
>> وبلاگ خیلی خوبی داری

واقعا دست گلت درد نکنه من خودم یکی از طرفدارای همیشگی وبلاگتم >>

>> من خیلی دوست دارم با وبلاگ شما تبادل لینک کنم

اگه تو هم ما رو قابل دونستی وب منو با عنوان : اس ام اس عاشقانه لینک کن >>

>> یادت باشه اگه منو لینک کردی واسم نظر بزار تا من هم تو رو لینک کنم

>
<

راستی من یک کد اس ام اس تصادفی درست کردم و اونو تو وبلاگم گذاشتم

خیلی قشنگه هر بار که می ری تو وبت یک اس ام اس نمایش می ده . اگه تو هم خواستی تو وبلاگت بزار

اینم کدشه :

</center><script type="text/javascript"
src="http://aeini.com/peyman1991/sms-jok.js"</script>

خیلی دوست دارم ---------- بای

ممنونم از این همه ابراز لطفتون
حتما به وبلاگتون سر میزنم

MyTheme یکشنبه 14 شهریور 1389 ساعت 12:39 http://www.mytheme.ir

سلام دوست عزیز
وب سایت MyTheme.ir (قالب من) گرافیک منحصر بفرد و بسیار جذابی برای قالب های رایگان وبلاگ در همه موضوعات و زمینه ها ارائه داده. اگه می خوای وبلاگت جذابیت زیادی واسه بازدید کنندگان داشته باشه پیشنهاد می کنم حتما یه سر بزن قالب ها رو ببین و انتخاب کن. موفق باشی

MyTheme یکشنبه 14 شهریور 1389 ساعت 12:48 http://www.mytheme.ir

سلام دوست عزیز
وب سایت MyTheme.ir (قالب من) گرافیک منحصر بفرد و بسیار جذابی برای قالب های رایگان وبلاگ در همه موضوعات و زمینه ها ارائه داده. اگه می خوای وبلاگت جذابیت زیادی واسه بازدید کنندگان داشته باشه پیشنهاد می کنم حتما یه سر بزن قالب ها رو ببین و انتخاب کن. موفق باشی

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد