В настоящее время я создаю программу, которая будет вычислять обход избегающих себя в n-измерениях.
Программа должна иметь список координат, которые она посещала ранее.
Для известного максимального числа измерений я бы просто сделал вектор структуры позиции такой:
struct Position
{
long int x;
long int y;
long int z;
long int w;
etc...
}
std::vector<Position> history;
Position currentSite;
Но когда я программирую для n-мерной позиции, я не уверен, как это сделать, не создавая массив размером n * walk_length.
Есть ли более «правильный» способ сделать это?
Примечание: я программирую на C ++.
Я бы использовал вектор для координат и установил для позиций:
typedef std:vector<long> Position;
typedef std::set<Position> VisitedPositions;
Тогда вы сможете выбирать n динамически и быстрее искать позиции.
Если n
известен во время компиляции, вы можете использовать std::array<long,n>
представлять позицию.
Если n
не известно до времени выполнения, std::vector<long>
будет хорошим выбором.