#algorithm
#алгоритм
Вопрос:
У меня есть список, структурированный следующим образом:
s = [
[
[[0, 1, 1], [0, 0, 0]],
[[0, 0, 1], [0, 1, 0]],
[[0, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, 0]],
[[0, 0, 0], [1, 0, 0]],
[[1, 0, 0], [0, 0, 0]],
],
[
[[1, 0, 0], [0, 0, 0]],
[[0, 0, 0], [1, 0, 0]],
[[0, 1, 1], [0, 0, 0]],
[[0, 0, 1], [0, 1, 0]],
[[0, 1, 0], [0, 0, 1]],
[[0, 0, 0], [0, 1, 1]]
],
# And so on
]
Для каждого элемента с первым индексом, s[0]
, если второй подмассив, s[0][i][1]
, совпадает с соответствующим первым элементом в s[1]
, то у нас есть путь или часть пути. Это сложно, поэтому я приведу пример:
s = [
[
[[0, 1, 1], *[0, 0, 0]*], <---- This goes to multiple possibilities
[[0, 0, 1], [0, 1, 0]],
[[0, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 0, 0]],
[[0, 0, 0], [1, 0, 0]],
[[1, 0, 0], [0, 0, 0]],
],
[
[[1, 0, 0], [0, 0, 0]],
[*[0, 0, 0]*, [1, 0, 0]], <- here
[[0, 1, 1], [0, 0, 0]],
[[0, 0, 1], [0, 1, 0]],
[[0, 1, 0], [0, 0, 1]],
[*[0, 0, 0]*, [0, 1, 1]] <- and here
],
# And so on
]
Как я могу найти количество путей для каждого заданного элемента?
Комментарии:
1. Это проблема динамического программирования обхода графа DFS / BFS. Я надеюсь, что эти ключевые слова помогут вам найти ответ путем поиска. Вы можете использовать DFS / BFS для перехода от верхнего левого элемента к нижнему правому и использовать «кэш» или карту для записи количества путей в каждой позиции. Если эти слова для вас неясны или вы не смогли найти идеальных решений, вы можете прокомментировать здесь свои проблемы 🙂
2. Привет, Марк, спасибо. Я пытаюсь сделать это таким образом, но я просто борюсь. Я получу это, хотя в конце концов 🙂
3.Некоторые, возможно, полезные ссылки для вас: geeksforgeeks.org/check-possible-path-2d-matrix algorithms.tutorialhorizon.com /…
4. Требуется пояснение: что должно означать «и так далее»? Т.е. У вас есть путь только в том случае, если существует полный путь от s [0], поэтому s [n] где n — размер s, или вам просто нужны ссылки s [i] на s [i 1]? Кроме того, тройки отвлекают, с таким же успехом могут быть a, b, c, .. верно?