דצמ.10

מגדלי האנוי

מגדלי האנוי

יש לכתוב קוד פתירת בעית Tower of Hanoi.

יש 3 חוקים.

1. רק דיסק אחד ניתן להזיז באותו זמן

2. דיסק לא יכול להיות מעל דיסק קטן ממנו

3. דיסק ניתן להזיז רק מלמעלה.

 p,rui

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. int n = 3;
  6. Tower[] towers = new Tower[n];
  7. for(int i=0; i<3; i++)
  8. {
  9. towers[i] = new Tower(i);
  10. }
  11. for (int i=n-1; i>=0; i--)
  12. {
  13. towers[0].add(i);
  14. }
  15. towers[0].moveDisks(n, towers[2], towers[1]);
  16. }
  17. }
  18.  
  19. public class Tower
  20. {
  21. private Stack<int> disks;
  22. public int Index { get; private set; }
  23. public Tower(int i)
  24. {
  25. disks = new Stack<int>();
  26. this.Index = i;
  27. }
  28. public void add(int d)
  29. {
  30. if (disks.Count > 0 && disks.Peek() <= d)
  31. Console.WriteLine($"Error placing disk {d}");
  32. else
  33. disks.Push(d);
  34. }
  35. public void moveTopTo(Tower t)
  36. {
  37. int top = disks.Pop();
  38. t.add(top);
  39. }
  40. public void moveDisks(int n, Tower destination, Tower buffer)
  41. {
  42. if(n>0)
  43. {
  44. moveDisks(n - 1, buffer, destination);
  45. moveTopTo(destination);
  46. buffer.moveDisks(n - 1, destination, this);
  47. }
  48. }
  49. }


שתף את הסיפור הזה:

תגובות(0)

השאירו תגובה

קפטצ'ה לא מתאימה

תגובה