У меня есть многомерная матрица, которая может иметь любое количество измерений больше единицы.Ищем эффективный алгоритм, который может посещать каждую точку матрицы.
Некоторая информация о коде: Матрица имеет такие методы доступа, как значения (хотя они не очень актуальны).
object value = matrixInstance.GetValue(int[] point);
matrixInstance.SetValue(object value, int[] point);
Примечание: Аргумент точка является массивом индексов и должен соответствовать # измерениям, иначе генерируется исключение.
Информация о структуре матрицы может быть получена:
int numDims = matrixInstance.Rank; //# dimensions
int sizeDim = matrix.getRankSize(int index); // length of specified dimension
Я хочу перебрать все возможные точки матрицы, используя относительно эффективный алгоритм.
Например, в 2D матрице 2x3 будут посещены следующие шесть точек:
[0,0] [0,1] [0,2] [1,0] [1,1][1,2]
Алгоритм должен работать до N измерений: 2,3,4 и т. Д.Для эффективности я буду использовать C # итератор для возврата очков.