Сдвиг массива в любую из сторон

 
0
 
C++
ava
REZiaMIX | 22.09.2013, 21:44
Вроде бы простая задача, но никак не могу сделать оптимальный алгоритм:
Есть двухмерный(квадратный) массив. Нужно сдвинуть его значения на N позиций по данному сдвигу, например:
1,0 - на 1 вправо
1,1 - на 1 вправо и на 1 вниз
-1,-2 - на 1 влево и на 2 вверх

При этом нужно обработать убывшие и прибывшие элементы. Например сделать delete для убывших, и прибывшие заполнить = new ArrayElement();

Даже не знаю как такое отгуглить, везде только про сдвиг в одну сторону. И кажется мне, что эта задача имеет простое решение.
Comments (1)
ava
feodorv | 22.09.2013, 22:37 #
Цитата (REZiaMIX @  22.9.2013,  21:44 findReferencedText)
везде только про сдвиг в одну сторону

Ну так делайте аналогично, но только учитывая направление сдвига. У Вас всего 4 варианта:
  • dx >= 0, dy >= 0: движение по матрице справа-налево и снизу-вверх
  • dx >= 0, dy < 0: движение по матрице справа-налево и сверху-вниз
  • dx < 0, dy >= 0: движение по матрице слева-направо и снизу-вверх
  • dx < 0, dy < 0: движение по матрице слева-направо и сверху-вниз
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit