Задача коммивояжера - нужен пример - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д