У меня проблема с поиском N позиций в сетке на основе центральной точки и максимального диапазона.
У меня есть эта сетка, каждая координата в сетке может быть либо закрытой, либо открытой, япривязываю, используя открытую координату, нахожу все открытые координаты вокруг первой, которые действительны, и диапазон ходьбы между ними равен или меньше, чем максимальный диапазон ходьбы.
Сначала я попробовал решение, используяA *, где я выбрал бы каждую координату в диапазоне, проверил, были ли они действительными, если бы они были, я бы вызвал A * из них в центральное положение и посчитал количество шагов, если бы они были выше, чем мой максимальный диапазон, я бы простоудалить координату из моего списка.Конечно, это действительно медленно для диапазонов выше 3 или для сеток с несколькими координатами.Затем я попытался рекурсивно искать координаты, начиная с центральной, расширять и рекурсивно проверять правильность координат.Это решение оказалось наиболее эффективным, за исключением того, что в моем коде каждый вызов функции перепроверял уже проверенные координаты и возвращал повторяющиеся значения.Я думал, что мог бы просто разделить список «проверенных» между вызовами функций, но это просто сломало мой код, так как вызов проверял координату и закрывал ее, даже если у нее все еще были дочерние узлы, но технически они не находились в диапазоне их центра (но находились в пределах досягаемости первого центра) он закрыл бы их и дал бы странные результаты.
Наконец, мой вопрос: как мне это сделать?Мой подход неверен?Есть ли лучший способ сделать это?
Спасибо.