Задача коммивояжера - нужен пример - C#

Узнай цену своей работы

Формулировка задачи:

Нужен алгоритм комивояжжера написанный на C#. Искал в гугле ничего не нашел

Решение задачи: «Задача коммивояжера - нужен пример»

textual
Листинг программы
  1.  public class FakeMatrix
  2.     {
  3.         private List<Guid> _x = new List<Guid>();
  4.         private List<Guid> _y = new List<Guid>();
  5.         private Dictionary<Tuple<Guid, Guid>, object> _data = new Dictionary<Tuple<Guid, Guid>, object>();
  6.  
  7.         // соорудили
  8.         public FakeMatrix(int x, int y)
  9.         {
  10.             for (int i = 0; i < x; i++)
  11.                 _x.Add(Guid.NewGuid());
  12.             for (int j = 0; j < y; j++)
  13.                 _y.Add(Guid.NewGuid());
  14.             for (int i = 0; i < x; i++)
  15.                 for (int j = 0; j < y; j++)
  16.                     _data.Add(Tuple.Create(_x[i], _y[j]), null);
  17.  
  18.         }
  19.         // брать и засовывать данные
  20.         public object this[int x, int y]
  21.         {
  22.             get
  23.             {
  24.                 if (x >= 0 && x < _x.Count && y >= 0 && y < _y.Count)
  25.                     return _data[Tuple.Create(_x[x], _y[y])];
  26.                 else
  27.                     return null;
  28.             }
  29.             set
  30.             {
  31.                 if (x >= 0 && x < _x.Count && y >= 0 && y < _y.Count)
  32.                     _data[Tuple.Create(_x[x], _y[y])] = value;
  33.                 else
  34.                     throw new Exception("Хреновые координаты.");
  35.             }
  36.         }
  37.         // удалять строку/столбец
  38.         public void RemoveX(int i)
  39.         {
  40.             if (i >= 0 && i < _x.Count) {
  41.                 List<Tuple<Guid, Guid>> remove = _data.Keys.Where(k => k.Item1 == _x[i]).ToList<Tuple<Guid, Guid>>();
  42.                 foreach (var item in remove)
  43.                     _data.Remove(item);
  44.                 _x.RemoveAt(i);
  45.             }
  46.         }
  47.         public void RemoveY(int i)
  48.         {
  49.             if (i >= 0 && i < _y.Count) {
  50.                 List<Tuple<Guid, Guid>> remove = _data.Keys.Where(k => k.Item1 == _y[i]).ToList<Tuple<Guid, Guid>>();
  51.                 foreach (var item in remove)
  52.                     _data.Remove(item);
  53.                 _y.RemoveAt(i);
  54.             }
  55.         }
  56.  
  57.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы