Задача коммивояжера - нужен пример - C#
Формулировка задачи:
Нужен алгоритм комивояжжера написанный на C#. Искал в гугле ничего не нашел
Решение задачи: «Задача коммивояжера - нужен пример»
textual
Листинг программы
public class FakeMatrix { private List<Guid> _x = new List<Guid>(); private List<Guid> _y = new List<Guid>(); private Dictionary<Tuple<Guid, Guid>, object> _data = new Dictionary<Tuple<Guid, Guid>, object>(); // соорудили public FakeMatrix(int x, int y) { for (int i = 0; i < x; i++) _x.Add(Guid.NewGuid()); for (int j = 0; j < y; j++) _y.Add(Guid.NewGuid()); for (int i = 0; i < x; i++) for (int j = 0; j < y; j++) _data.Add(Tuple.Create(_x[i], _y[j]), null); } // брать и засовывать данные public object this[int x, int y] { get { if (x >= 0 && x < _x.Count && y >= 0 && y < _y.Count) return _data[Tuple.Create(_x[x], _y[y])]; else return null; } set { if (x >= 0 && x < _x.Count && y >= 0 && y < _y.Count) _data[Tuple.Create(_x[x], _y[y])] = value; else throw new Exception("Хреновые координаты."); } } // удалять строку/столбец public void RemoveX(int i) { if (i >= 0 && i < _x.Count) { List<Tuple<Guid, Guid>> remove = _data.Keys.Where(k => k.Item1 == _x[i]).ToList<Tuple<Guid, Guid>>(); foreach (var item in remove) _data.Remove(item); _x.RemoveAt(i); } } public void RemoveY(int i) { if (i >= 0 && i < _y.Count) { List<Tuple<Guid, Guid>> remove = _data.Keys.Where(k => k.Item1 == _y[i]).ToList<Tuple<Guid, Guid>>(); foreach (var item in remove) _data.Remove(item); _y.RemoveAt(i); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д