* эвристика: Кратчайший путь, передающий однажды в нескольких точках

Существует также способ получить элемент за пределами onItemClick:

int index = tv.getListSelection();
if (index != ListView.INVALID_POSITION) {
    Object item = tv.getAdapter().getItem(index);
}

, остерегайтесь того, что int getListSelection() может вернуть ListView.INVALID_POSITION, если нет раскрывающегося списка или если нет выбора.

6
задан mmcdole 28 May 2009 в 02:14
поделиться

1 ответ

После выполнения алгоритма кратчайшего пути для всех пар и определения вершин с помощью еды это становится задачей коммивояжера . Вы не можете решить его эффективно, но вы можете построить сколь угодно хорошие приближения к решению за полиномиальное время. Вы, вероятно, захотите использовать приближение, если не сможете все предварительно вычислить. Если вы можете выполнить предварительные вычисления (или иным образом гарантировать, что у вас будет достаточно времени, чтобы найти точное решение), то, получив кратчайшие пути всех пар, вы можете просто найти минимальную общую длину пути по всем возможным изменения порядка, в котором вы едите кусочки пищи. Этот метод грубой силы, вероятно, можно несколько улучшить, если следить за тем, когда кратчайший путь между двумя кусочками пищи пересекает другой кусок пищи.

4
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: