Сдвиг элементов двумерного массива по часовой стрелке (C++)

Рейтинг: 0Ответов: 1Опубликовано: 26.10.2014

Нужно сдвинуть элементы двумерного массива, на k элементов по часовой стрелке (С++).

1  1  1  1  
2  2  2  2  
3  3  3  3  
4  4  4  4 

Допустим, на k = 2, тогда:

3  2  1  1   
4  3  3  1   
4  2  2  1    
4  4  3  2  

Вопрос: можно ли здесь использовать дополнительный массив такого же размера, чтобы в него записывать уже перемещённые элементы?

С дополнительным массивом я уже сделал, но есть подозрение, что это лишнее, и что можно обойтись парой переменных без второго массива. Или, всё же, то, что есть дополнительный массив — нормально?

Ответы

▲ 4Принят

По идее, достаточно одной дополнительной переменной.

Для каждого цикла вы запоминаете первый элемент в эту переменную, затем копируете второй в первый, третий во второй и так далее, на место последнего записываете сохранённый первый.