У меня есть 2-мерный массив (с размерами размеров n на 5), который я представляю себе в голове (каждый из них является элементом массива):Как циклически перемещаться по 2D-матрице (n на 12)
(http://tr1.cbsistatic.com/hub/i/2015/05/07/b1ff8c33-f492-11e4-940f-14feb5cc3d2a/12039.jpg)
В этом изображении, п равно 3. Т.е., п число столбцов, 5 число строк в моем массиве.
Я хочу найти эффективный способ итерации (например, пешком) по каждому пути, ведущему из любой ячейки в самом левом столбце, в любую ячейку в самом правом столбце, выбирая по одной ячейке из каждого столбца между ними.
Невозможно просто решить n вложенных циклов, так как n определяется только во время выполнения.
Я думаю, что это означает, что рекурсия, вероятно, лучший путь вперед, но не может представить, как начать теоретически.
Можете ли вы предложить несколько советов о том, как проходить по каждому пути. Это кажется достаточно простым, и я не могу сказать, что я делаю неправильно. Даже очень просто теоретическое объяснение без какого-либо кода будет очень оценено.
Я кодирую в C#, Visual Studio в случае, если это помогает.
UPDATE :: решен с помощью кода ниже от http://www.introprogramming.info/english-intro-csharp-book/read-online/chapter-10-recursion/#_Toc362296468
static void NestedLoops(int currentLoop)
{
if (currentLoop == numberOfLoops)
{
return;
}
for (int counter=1; counter<=numberOfIterations; counter++)
{
loops[currentLoop] = counter;
NestedLoops(currentLoop + 1);
}
}
Пожалуйста, попробуйте решить эту проблему самостоятельно. – Nate
* «Я хочу найти эффективный способ итерации (т. Е. Ходьбы) по каждому пути, ведущему из любой ячейки в самом левом столбце, в любую ячейку в правом столбце, выбрав одну ячейку из каждого столбца между ними.» * нужно определить правила намного лучше, чем это. Если я нахожусь в ячейке 'm, n', в какие ячейки я могу перейти в столбец' n + 1'? –
1. Вы начинаете в крайнем левом столбце y0 с любой координатой x 2. Если вы находитесь в ячейке (x, y), вы можете перемещаться только в ячейку с x-координатой (x + 1), но с любой координатой y 3. вы должны заканчиваться в правой колонке, yn, с любой координатой x – projectprogrammer