Массив как глобальная переменная
Нужно создать глобальный массив visited с длиной StationCount. Пробовал делать его статическим, но при выполнении дальнейших операций выходит ошибка, что индекс вышел за границы массива
class Metro
{
public List<Station> AllStations = new List<Station>();
public int StationCount { get { return AllStations.Count; } }
bool[] visited = new bool[StationCount];
public void AddStation(Station station)
{
AllStationss.Add(station);
}
Метод, в котором используется массив visited:
public void DFS(int[,] matrix, int curr)
{
visited[curr] = true;
for (int i = 0; i < StationCount; i++)
{
if (matrix[curr, i] != 0 && (!visited[i]))
{
DFS(matrix, i);
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Вот вы создали список
public List<Station> AllStations = new List<Station>();
Сколько в нем элементов? 0
Далее создаете массив
bool[] visited = new bool[StationCount]; // AllStations.Count
То есть массив из 0 элементов.
Далее выполняете
visited[curr] = true;
Чем бы ни было curr, будет исключение, потому что в массиве ничего нет, 0 элементов.
Если вам нужно много bool элементов по количеству Station в списке, создайте публичное поле в классе Station и обращайтесь к нему, массив не нужен вообще.